如何使用awk打印一系列单词? [英] How to print a series of words using awk?

查看:159
本文介绍了如何使用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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆