【发布时间】:2012-10-02 21:38:22
【问题描述】:
我正在尝试在文件 some_file 中查找选项卡的出现并打印带有前导行号的那些行。 grep -nP "\t" some_file 对我来说效果很好,但我想要 sed 或 awk 等效命令。
【问题讨论】:
我正在尝试在文件 some_file 中查找选项卡的出现并打印带有前导行号的那些行。 grep -nP "\t" some_file 对我来说效果很好,但我想要 sed 或 awk 等效命令。
【问题讨论】:
好吧,你总是可以在 sed 中做到这一点:
cat -n test.txt | sed -n "/\t/p"
不幸的是,sed 只能用新的一行将行号打印到 stdout,所以无论如何,需要多个命令。上面的一个更冗长(不必要的)版本,但一个只使用 sed,将是:
sed = test.txt | sed -n "N;s/\n/ /;/\t/p"
但我更喜欢cat 的那个。猫真好。
【讨论】:
模仿:grep -nP "\t" file.txt
这是使用GNU awk的一种方式:
awk '/\t/ { print NR ":" $0 }' file.txt
这是使用GNU sed的一种方式:
< file.txt sed -n '/\t/{ =;p }' | sed '{ N;s/\n/:/ }'
【讨论】:
awkman page,您可能想阅读“模式和动作”和“字符串函数”。至于sed,我喜欢this 教程。否则,我听说StackOverflow 是一个值得学习的好网站:-)