为什么要学习
Shell编程?在现实世界中可以做些什么呢?你能告诉我一些可以做到这一点的功能,还是一些特殊功能,以便说服我现在应该开始学习shell编程?
学习shell编程有十几个原因.其中一个主要原因是系统管理.
有人需要根据同一目录中的另一个文件重新命名〜750个文件.这是用3行shell脚本完成的.要获得更多的例子,只需使用标签[bash],[sed] or [awk]搜索问题.
当有人要求我向他们展示一个很好的“shell编程”的例子时,我总是向他们展示这个awk 1行(甚至是一个1字)?它将过滤列表以仅显示唯一值而不更改原始顺序.这很重要,因为大多数其他解决方案要求您首先对列表进行排序,从而破坏原始顺序.
$echo -e "apple\npear\napple\nbanana\nmango\npear\nbanana" | awk '!a[$0]++' apple pear banana mango
awk命令说明
非排序独特的魔法发生在!a [$0].由于awk支持关联数组,它使用当前记录(aka行)$0作为数组a []的键.如果以前没有看到该键,则[$0]计算为0(零),这是未设置索引的awk默认值.然后,我们在该键的第一次出现时取消此值返回TRUE. a [$0]然后递增,以便此键上的后续命中将返回FALSE,因此不会打印重复值.我们还利用这样一个事实:如果一个表达式返回TRUE并且没有给出进一步的{commands},那么awk将默认打印$0(打印当前记录/行).
如果你仍然不明白,别担心,这是一个非常简洁和优化的版本,可能是一个更长的awk脚本.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。