【问题标题】:Column selection via AWK通过 AWK 选择列
【发布时间】:2015-05-05 08:11:56
【问题描述】:

我有一组大的 txt 日志,看起来像

    0.001 +/-  0.001
   -0.001 +/-  0.001
    0.001 +/-  0.001
    0.002 +/-  0.001
    0.001 +/-  0.001
   -0.000 +/-  0.001
    0.000 +/-  0.001
    0.001 +/-  0.001
    0.003 +/-  0.002
   -0.001 +/-  0.001

从每个日志中,我只需要选择 1 列,删除所有空白并将其打印到新的 txt 文件中,对于上述日志,该文件应如下所示:

0.001
-0.001
0.001
0.002
etc..

将感谢 1 命令建议(可能通过 AWK)如何做到这一点

【问题讨论】:

  • awk '{print $1}' input_file
  • 大声笑?????????????????????????????????????????? ???????
  • 实在太不努力了,哈哈

标签: text awk multiple-columns


【解决方案1】:

要打印文件的第一列,您可以:

awk '{print $1}' file

如果要跳过文件的最后一行,可以将字段存储在 一个变量,每次打印上一行:

awk 'p!=""{print p}{p=$1}' file

【讨论】:

  • 谢谢!在这样的处理之后,我应该添加到 AWK 命令以跳过每个日志中的最后一行(就像 tail 命令的反向操作)。
  • @user3470313 我编辑了答案以添加一个跳过最后一行的解决方案
【解决方案2】:

还有这个:

cut -d' ' -f1 file > newFile

也可以使用

【讨论】:

    【解决方案3】:

    使用一些正则表达式...

    grep -Po '^\s*\K\S*' 
    

    或

    perl -nE 'say /(\S+)/'
    

    【讨论】:

    • 为什么不呢!这可能是我在这里见过的最基本的问题
    【解决方案4】:

    如果您没有任何号码,只有0,应该这样做:

    awk '$0=$1' file
    0.001
    -0.001
    0.001
    0.002
    0.001
    0.001
    0.003
    -0.001
    

    如果您有0 或需要更强大的版本。

    awk '{$0=$1}1' file
    0.001
    -0.001
    0.001
    0.002
    0.001
    0.001
    0.003
    -0.001
    

    【讨论】:

      猜你喜欢
      • 2011-12-03
      • 2015-08-21
      • 1970-01-01
      • 2019-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多