如何使用awk打印一系列单词? [英] How to print a series of words using awk?
问题描述
我知道awk
只能用于打印输出中的某些单词.例如
I know that awk
can be used to print only certain words from the output.For example
dpkg -l|awk '{print $2}'
将从dpkg -l
的输出中打印第二个单词.
would print 2nd word from the output of dpkg -l
.
我想做的是在给定单词之后打印每个单词.我的命令如下所示:
What I want to do is, print every word after a given word.My command looks like this
awk '{printf "%-40s %s\n", $1, $n}'
我不想打印所有使用$n
或$0
的单词,而是希望打印出每个后面的单词,例如第5个字符.
Rather than printing all the words with $n
or $0
, I would like to print every word that comes after, say 5th character.
我该怎么做?
编辑:我的完整命令是
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个字符之后输入所有内容.
and many more lines. The "abort can be found in" and similar lines are irrelevant, I don't want them, but I want everything that comes after those 5 characters.
所以输出应该看起来像
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或任何其他命令执行此操作?我需要保留列状输出.
How can do this with awk or any other command? I need to keep the columnar output.
推荐答案
尝试以下方法:
many commands | awk '{for(i=6;i<=NF;i++){printf "%s\n", $i}}'
如果不希望使用换行符分隔下面的每个单词,则将从字段6开始打印所有内容:
Will print everything from field 6 onwards, if you dont want a newline seperating each word use below:
many commands | awk '{for(i=6;i<=NF;i++){printf "%s ", $i}}'
对于完整的问题,请在下面使用:
for your complete question use below:
bind -P|grep "can be found"|sort | awk '{printf "%-40s", $1} {for(i=6;i<=NF;i++){printf "%s ", $i}{printf"\n"}}'
给出输出:
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-?".
backward-kill-line "\C-x\C-?".
etc...
这篇关于如何使用awk打印一系列单词?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!