【问题标题】:difference in default delimiter and field calculation in cut and awkcut 和 awk 中默认分隔符和字段计算的差异
【发布时间】:2018-05-21 23:25:23
【问题描述】:

我正在尝试缩短进程启动的时间。 这是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中的字段分隔符有什么区别?

【问题讨论】:

  • awk 默认情况下将所有连续的空白“挤压”到单个分隔符。

标签: awk field cut


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    cut 计算空格,awk 计算字段,默认将所有连续的空白视为一个分隔符。请注意,如果您已经在使用awk,则不需要grep

     ... |  awk '/txg/{print $5}'
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-28
      • 1970-01-01
      • 2015-06-03
      • 2020-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多