我什么时候应该使用 sed,什么时候应该使用 awk [关闭]

2024-02-26

过去几天和之前我一直在问一些问题sed and awk。 每当我问 awk 问题时,人们说使用 sed,而当我问 sed 问题时,人们说使用 awk,就会发生这种情况。

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

To me , awk用于演示和报告无替代 和sed用于需要更换某些东西的地方。

但仍然有很多人给我举了一些例子,其中替换是通过awk与打印命令。

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

举个例子。认为

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

我应该用什么sed or awk。模式也可以跨越多行


评论里的链接很有价值。我会根据我个人对 sed/awk 使用的感觉添加一些行。

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

  • 如果我想做文本处理,并写回原始文件而不生成临时文件,sed 将获胜。

  • 我喜欢 sed 的地址,它可以大大缩短代码。例如3,6{s/a/b/}, 1~2{s/f/b/} or 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 http://sed.sourceforge.net/sed1line.txt有很多神奇的俏皮话),我会选择 sed。否则我会首先想到 awk。

sed和awk都是非常强大的文本处理工具,linux/unix box中有很多文本处理工具,comm、cut、join、paste、sort、uniq...它们的选项参数也很多。我比较懒,记不住全部,只记住那些常用的。但如果我知道如何使用 awk、sed 和 grep。 linux下90%的文本处理都可以完成。如果 awk、sed 和 grep 不能完成这项工作,我会转向编程语言。例如Python。

好吧,我不是一个 Perl 人。

有什么我忘记了吗?

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我什么时候应该使用 sed,什么时候应该使用 awk [关闭] 的相关文章

随机推荐