我什么时候应该使用sed和什么时候应该使用awk

用户175386049:

最近几天之前,我一直在问有关sed和的问题awk每当我问awk问题时,人们说要使用sed,而当我问sed问题时,人们说要使用awk。

谁能给我一些例子,说明我可以在哪里使用。

对我而言,awk习惯于演示和报告没有替代,并且sed用于需要替代的地方。

但是仍然有很多人给我提供了一些示例,这些示例是通过awk打印命令进行替换的。

现在我真的很困惑它的用例是什么。

举个例子。假设

我有C ++的源代码文件,我想add在特定模式之前写一些代码。

我应该使用sedawk模式也可以跨越多行

肯特

评论中的链接非常有价值。我会根据个人对sed / awk的使用感觉添加一些内容。

我强调,sed和awk都可以完成许多文本处理任务。下面的文字只是我的个人感觉。

  • 如果我想进行文本处理,并在不生成临时文件的情况下写回原始文件,则sed会获胜。

  • 我喜欢sed的地址,它可以大大缩短代码。例如3,6{s/a/b/}1~2{s/f/b/}3~5{s/f/b/}

  • 如果要将匹配的部分传递给外部命令/程序,awk比sed(Gnu sed)更容易。如果您想找点乐子并尝试使用sed,则可以玩游戏:匹配文本,并将部分(\ 1,\ 2等)传递给其他sed。就是sed嵌套。3次后,我迷路了... :)

  • 如果文本以某种方式基于“列”,那么在99%的情况下,awk不会让您失望。

  • 如果要对多文件进行不同的文本处理,我会选择awk。例如,{001-003}.txt不同的替代要求。

  • awk擅长在多文件之间进行类似联接的处理

  • 如果逻辑需要某些结构,如if-else,for循环,while,数字计算等,我会选择awk。尽管在很多情况下sed都能胜任。

  • sed和awk都不支持Perl Regex。真可惜。

  • 因此,基本上,我认为awk比sed更灵活和直接。如果任务相对简单,或者有著名的魔术sed解决方案(请参阅http://sed.sourceforge.net/sed1line.txt,其中有很多魔术一线),我会选择sed。否则我会首先想到awk。

sed和awk都是非常强大的文本处理工具,在linux / unix框中有很多文本处理工具,包括comm,cut,join,paste,sort,uniq ...,其中有很多选项参数。我很懒惰,不记得所有这些,只是那些常用的。但是,如果我知道如何使用awk,sed和grep。在Linux下可以完成90%的文本处理。如果awk,sed和grep无法胜任,我将转向一种编程语言。例如python。

好吧,我不是perl家伙。

有什么我忘了吗?

我的2美分,希望对您有所帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章