Jus*_*ner 5 unix linux command-line command
我是Linux/Unix的新手.我发现使用这些命令可以通过多种方式完成一些任务.他们之间有什么关系吗?或者哪一个更受欢迎?哪一个过时了?
谢谢.
有关Perl,Python,Awk和Sed之间差异的讨论,请参阅SO 366980.
五个列表中有四个不同的命令; awk和gawk密切相关,GNU Awk是Awk的GNU实现.
find用于根据文件特征(如名称或修改时间)在一组目录中查找文件.GNU Find具有比Find的传统或POSIX版本更多的功能.
grep用于使用正则表达式来定位文件中的内容以控制所选内容.GNU Grep比Grep的传统或POSIX版本具有更多功能.
sed用于使用编辑命令修改文件的内容,包括正则表达式.GNU Sed具有比Sed的传统或POSIX版本更多的功能.
awk是一种模式匹配和格式化语言.它是一种编程语言,与您提到的其他工具不同.在需要时,它非常有用.但是,Perl和Python也具有Awk和许多附加功能,因此很多人使用它们而不是Awk.GNU Awk比传统或POSIX版本的Awk具有更多功能.
因此,您列出的工具可以完成不同的工作,但可以通过多种方式协同工作.您应该注意的另一个工具是xargs,它接收文件列表并依次对每个文件运行指定的命令.
AWK 是由 Aho、Weinberger 和 Kernighan 设计的一种编程语言。 gawk是 AWK 的一种实现,但还有其他几种实现,包括mawk、 和nawk。它是一种成熟的编程语言,具有变量、控制结构和关联数组,但通常针对处理 UNIX 系统上常见的基于文本的数据进行了优化。
sed是流编辑器,灵感来自ed编辑器。它有一个简单的命令集,主要限于逐行编辑。 sed命令可以很容易地通过模仿awk。以下是等效的:
sed -e 's/foo/bar/g'
awk '{ gsub(/foo/, "bar"); print $0 }'
awk '{gsub(/foo/,"bar")}1'
Run Code Online (Sandbox Code Playgroud)
grep找到文本。基本功能可以在和grep中轻松模仿。以下是等效的:sedawk
grep 'foo.bar'
sed -n -e '/foo.bar/p'
awk '/foo.bar/ { print $0 }'
awk '/foo.bar/'
Run Code Online (Sandbox Code Playgroud)
哎呀,错过了find。
find遍历文件系统树,根据指定的标准执行操作。例如,
find . -name '.*' -prune -o ! -name '*~' -type f -exec cat '{}' \;
Run Code Online (Sandbox Code Playgroud)
将遍历从当前目录开始的所有文件和目录.,排除(并且不会下降到)名称以 开头的任何目录.,并cat在名称不以 结尾的每个文件上运行~(结果是打印出该文件的内容) 。同样,这在 AWK 或 Perl 或许多其他编程语言(甚至在本例中是纯 shell)中都是可行的,但使用专用工具更容易、更快地编写和理解。
| 归档时间: |
|
| 查看次数: |
8477 次 |
| 最近记录: |