如果awk处理得到两行 如何只输出一行例如awk 'if(nf<5)print $0'会得到两行

据现在需要得到其中一行怎么写... 据 现在需要得到其中一行怎么写 展开
 我来答
mzgjingsi
推荐于2017-10-08 · TA获得超过534个赞
知道小有建树答主
回答量:412
采纳率:100%
帮助的人:289万
展开全部
参考下面的命令,可以在awk命令后通过 | 命令+tail 、head、grep组合来达到你要的效果

---------------------------------------------------
参考下cat、tail、head、tee:文件打印命令
这些命令的语法基本上相同的:命令名 [选项] [文件],而且您可以在管道中使用这些命令。这些命令的功能都是根据特定的条件选择文件内容进行打印。
cat 工具会将文件的全部内容打印到标准输出。
这是最常用的命令之一。例如,您可以使用:
# cat /var/log/mail/info
将邮件程序守护程序日志的内容打印到标准输出[14]。
cat 命令有一个非常有用的选项(-n),该选项将允许您打印行号。
某些文件,如守护程序日志文件(如果相应的守护程序运行了的话)可能非常大[15],在屏幕上打印全部内容可能没什么必要。
您经常只是需要看看一个文件的某几行。
您可以使用 tail 命令完成这一功能。默认情况下,下面的命令将会打印 /var/log/mail/info 文件的最后十行:
# tail /var/log/mail/info
您可以使用 -n 选项显示文件的最后 N 行。例如,要显示最后两行,您应该执行:
# tail -n2 /var/log/mail/info
而 head 命令与 tail 十分相似,只是打印文件的头几行。默认情况下,下面的命令将会打印 /var/log/mail/info 文件的头十行:
# head /var/log/mail/info
和 tail 一样,您也可以使用 -n 选项指定要打印的行数。例如,要打印前两行,您应该执行:
# head -n2 /var/log/mail/info
您还可以组合使用这几条命令。
例如,如果您想要只显示第九行和第十行,您可以先使用 head 命令选择文件的前十行,然后再将结果通过管道送到 tail 命令。
# head /var/log/mail/info | tail -n2
竖线后面的部分将选择最后两行,然后将其打印到屏幕。同样地,您也可以选择只打印文件的倒数第 20 行:
# tail -n20 /var/log/mail/info |head -n1
在本例中,我们让 tail 选择了文件的最后 20 行,然后将结果通过管道传送给 head。然后 head 命令将会从得到的数据中取出第一行打印到屏幕上。
现在我们假定您想要将上例中的结果在屏幕上显示的同时还保存到文件 results.txt。
tee 工具可以帮到我们。其语法是:
tee [选项] [文件]
现在,我们可以将上一命令做如下更改:
# tail -n20 /var/log/mail/info |head -n1|tee results.txt
我们再来举一个例子。我们想要选择最后 20 行,将其保存到 results.txt,但是只在屏幕上显示这 20 行中的第一行。那么,我们应该输入:
# tail -n20 /var/log/mail/info |tee results.txt |head -n1
tee 命令有一个非常有用的选项(-a),它允许您将数据追加到已有文件。
让我们再回过头来看看 tail 命令。像日志这样的文件应该是在不断变化的,因为与其相关的守护程序每时每刻都在记录着它所执行的动作和发生的事件。所以,如果您想要交互地观看日志文件,您可以使用 -f 选项:
# tail -f /var/log/mail/info
在本例中,/var/log/mail/info 文件的所有更改都会立即打印到屏幕上。当您想要知道您系统的工作原理时,使用带 -f 选项的 tail 命令将非常有用。例如,通过查看 /var/log/messages 日志文件,您可以时刻跟踪系统信息和各种守护程序。
在下一节中,我们将会看到如何将 grep 用作过滤器,以便从来自其它服务的信息中拆出 Postfix 信息。

grep: 定位文件中的字符串
不管是命令的名字还是缩写(“General Regular Expression Parser”)都显得非常古怪,但该命令的作用和用法却很简单:grep 将在一个或多个文件中查找给定的模式。其语法为:
grep [选项] <模式> [一个或多个文件]
如果列出了多个文件,将会在每一行结果的开头附加相应的文件名。使用 -h 选项可以不显示这些文件名;使用 -l 选项可以只列出文件名。模式是一个正则表达式,尽管在大多数情况下只是一个简单的单词。下面列出了最常用的几个选项:
-i:进行不区分大小写的搜索;
-v:反转搜索。显示不与模式匹配的行;
-n:显示找到行的行号;
-w:让 grep 在进行模式匹配时匹配整个单词。
百度网友5311d79
2014-07-22 · TA获得超过1.9万个赞
知道大有可为答主
回答量:6356
采纳率:71%
帮助的人:3222万
展开全部
awk 'NF<5{print}' | head -n1 #得到第一行
awk 'NF<5{print}' | tail -n1 #得到倒数第一行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式