【发布时间】:2014-05-20 17:02:48
【问题描述】:
我知道awk 可用于仅打印输出中的某些单词。例如
dpkg -l|awk '{print $2}'
将从dpkg -l 的输出中打印第二个单词。
我想要做的是,在给定单词之后打印每个单词。我的命令看起来像这样
awk '{printf "%-40s %s\n", $1, $n}'
我不想打印带有$n 或$0 的所有单词,而是想打印后面的每个单词,比如第5 个字符。
我该怎么做?
编辑:我的完整命令是
bind -P|grep "can be found"|sort|awk '{printf "%-40s %s\n", $1, $n}'
这给出了类似的输出
abort abort can be found on "\C-g", "\C-x\C-g", "\e\C-g".
accept-line accept-line can be found on "\C-j", "\C-m".
backward-char backward-char can be found on "\C-b", "\eOD", "\e[D".
backward-delete-char backward-delete-char can be found on "\C-h", "\C-?".
character-search-backward character-search-backward can be found on "\e\C-]".
character-search character-search can be found on "\C-]".
clear-screen clear-screen can be found on "\C-l".
还有更多的行。 “可以在中找到中止”和类似的行无关紧要,我不想要它们,但我想要这 5 个字符之后的所有内容。
所以输出应该是这样的
abort "\C-g", "\C-x\C-g", "\e\C-g".
accept-line "\C-j", "\C-m".
backward-char "\C-b", "\eOD", "\e[D".
backward-delete-char "\C-h", "\C-?".
如何使用 awk 或任何其他命令来做到这一点?我需要保留列输出。
【问题讨论】:
-
喜欢这个
many-piped-commands | sed -n 's/myword/&\n/;s/.*\n//p'? -
你能举个例子吗?什么是单词?
-
@devnull 我在新编辑中发布了一个命令作为示例。
-
@Jayesh 我添加了一个命令作为示例。请在编辑中查看。
标签: bash awk text-processing