cut和awk中默认分隔符和字段计算的差异

时间:2017-12-07 19:07:06

标签: awk field cut

我正在努力减少流程开始的时间。 这是ps系列。似乎是由空格分隔。

 casper@casperhost02 1065$ ps -ef | grep [t]xg casper  5345     1 34 16:40 ?        00:06:56 q /casper_apps/casper/reader/q/txg_dr.q -g 1 -w 80000 -p 3041 -taq /casper_apps/casper/data/fiofs/hdb0 -bin /casper_apps/casper/reader/q -t1 /casper_apps/casper/data/file -cmq /casper_apps/casper/common/q -ref /casper_apps/casper/static -prg txg_dr

我想从ps线切割时间并按字段提取.. 当我使用空格切割和分隔时,时间在第10场。

casper@casperhost02 1075$ ps -ef | grep [t]xg | cut -d' ' -f10

16:40

然而,当我使用awk时,默认情况下由空格分隔的id是字段5.

 casper@casperhost02 1076$ ps -ef | grep [t]xg | awk '{print $5}'

16:40

awk和cut中的字段分隔符有什么区别?

2 个答案:

答案 0 :(得分:0)

cut计算空格,awk计算字段,默认情况下将所有连续的空格视为一个分隔符。请注意,如果您已使用grep

,则不需要awk
 ... |  awk '/txg/{print $5}'

您还可以将正则表达式(或文字)匹配限制为正确的字段,并消除误报。

答案 1 :(得分:0)

cut接受单字符分隔符,仅适用于非常简单的文本文件格式。

Awk更加通用,可以处理更复杂的字段分隔符定义,甚至(在某些方言中)可以处理正则表达式。默认情况下,Awk将 空格的序列视为单个分隔符。

切向,您似乎在寻找命令pgrep。如果您必须重新发明它,请记住,grep x | awk '{y}'几乎总是可以写成awk '/x/{y}'