删除以shell中的字符开头的行,但保留负值

时间:2017-07-10 08:12:44

标签: linux shell sed grep

我有数据集:

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

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

out.txt
-1
2
-3
1

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

我需要修改我的代码。

我的代码:

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

2 个答案:

答案 0 :(得分:1)

您可以尝试这样:

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

(OR)

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

答案 1 :(得分:1)

$ grep -E '^[-| ][0-9]' file.txt > out
$ cat out
-1
 2
-3
 1