【问题标题】:Remove the lines starting with a character in shell, but preserve the negative values删除 shell 中以字符开头的行,但保留负值
【发布时间】:2017-07-10 08:12:44
【问题描述】:

我的数据集为:

file.txt
de
fds
fds
a
sa
 -1
 2
 -3
 1
}

我想删除所有以字符或特殊字符开头的行,但保留负值。所以我的输出是:

out.txt
-1
2
-3
1

这个问题与我之前的一个问题Remove the lines starting with a character in shell 相关,我可以使用它删除所有以包含负号的字符开头的行。

我需要修改我的代码。

我的代码:

grep -E "^[0-9].*" file.txt

【问题讨论】:

    标签: linux shell sed grep


    【解决方案1】:

    你可以这样试试:

    grep '^ *[-+]\?[0-9]\+' file.txt > out.txt
    

    (或)

    grep -E '^ *[-+]?[0-9]+' file.txt > out.txt
    

    【讨论】:

    • 谢谢,但很抱歉我在数字前有空格。所以它正在删除所有值......我已经修改了我的问题
    • @Kay,更新答案。
    【解决方案2】:
    $ grep -E '^[-| ][0-9]' file.txt > out
    $ cat out
    -1
     2
    -3
     1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-27
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 2019-12-21
      相关资源
      最近更新 更多