为什么老感觉 awk/sed 这一类工具很难用, 用起来很痛苦?

发布于 2022-09-04 12:53:49 字数 334 浏览 16 评论 0

2016/12/7

问题

  1. 语法记不住

  2. 特殊变量记不住(NR之类的, 这让我想到了bash中的$# $@这一类的变量, 真的很难记住)

  3. 忘记得很快

  4. 其他...

实践得少还情有可原, 但是也用了有一段时间了, 老感觉用它们有点痛苦.
使用它们, 老让自己产生自我怀疑, 工具不应当是这样的

上下文环境

  1. linux

  2. gawk gsed

尝试解决

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

椵侞 2022-09-11 12:53:49

因为的确很难用,用起来的确很痛苦啊。

到现在我也只会一些简单的awk和sed用法。
我把awk当成高级版的cut来用了,偶尔用来算数字总和也还行,要用到NR之类的话,与其查表,不如正正经经写脚本语言。
sed就单纯用来取代字符了,什么pattern space hold space之类的,堪比brainfuck编程。

从一个方向想,就算是用起来这么痛苦的工具,用多了也自然就习惯了。
但从另一个方向想,就算是要写比较多字的Python / Ruby / Perl等语言,写多了也自然就快了。
那我干嘛不选后者呢……

め可乐爱微笑 2022-09-11 12:53:49

写脚本的话awk哪里不好用了,sed的话基本没有什么需求了。建议题主看一下这本书

秋千易 2022-09-11 12:53:49

举一个刚刚别人的问题的例子,有一个变量 a='C1 AC_REG,C8 ARR_RUNW,C10 30FT_TO_TD,C4 TIME,C6 DEP_RUNW,C5 ORIGIN,C3 DATE,C7 DESTINATION,C2 FLIGHT_NUM' 他希望将所有的C数字+空格都去掉,剩下AC_REG,ARR_RUNW,30FT_TO_TD,TIME,DEP_RUNW,ORIGIN,DATE,DESTINATION,FLIGHT_NUM
当然这问题用任何语言都能处理,也不复杂。但用awk和sed这类的工具意义就在于,它们能更快速的解决问题:echo $a|sed -r 's/C[0-9]{1,2} //g'
至于说特殊变量或者命令记不住,其实最好的办法就是,简单的文本处理问题多多练习,试着从不同的角度去想解决办法。实践多了就都记住了。

无远思近则忧 2022-09-11 12:53:49

sed 1974
awk 1977
perl 198?

他们都是文本处理工具(或语言),存在这么久自然有他的道理,首先语法并不复杂,只是你不熟悉。

为什么容易忘记,你不常用当然就会忘记。

变量名难记?如果你知道awk的record(行)和filed(列)概念,什么NR,NF这些应该就很好记了吧?
NUMBER OF RECORDS, NUMBER OF FIELDS

如果你的工作天天各种文本处理,你自然就会喜欢这些东西。

awk对于perl或者python这些语言当然没有什么优势,但是它简单啊,很多类unix系统都自带啊,perl和python并不敢说每个发行版都有吧?

另外他们存在这么长时间,有一个共识问题,有些问题大家自然而然就会想到awk该怎么解决。

so,以上给出一些不同的意见

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文