使用sed删除文本文件中的编号

时间:2015-09-13 18:27:17

标签: linux sed text-files

我尝试使用覆盆子pi上的sed删除文本文件中的编号。

文本文件:

0 100
1 125
2 160
3 200
4 250
5 320
6 400
7 500
8 640
9 800
10 1000
11 1250
12 1600

sed后的输出:

100
125
160
200
250
320
400
500
640
800
1000
1250
1600

sed -i' s / ^。{,2} //' - 只删除前两个数字,但是当你有超过10个数字时,它将无法工作。

有没有办法删除第一个值,直到空格?

2 个答案:

答案 0 :(得分:1)

这会删除前导数字,同时保留行没有前导数字不变:

$ sed 's/^[[:digit:]]\{1,\}[[:blank:]]*//' textfile 
100
125
160
200
250
320
400
500
640
800
1000
1250
1600

如何运作

在sed中,替换命令的格式为s/old/new/,其中old是正则表达式。在我们的例子中,我们希望替换为空,因此new字段为空。

我们希望首先匹配行开头的数字:^[[:digit:]]\{1,\}^表示行首。 [[:digit:]]\{1,\}匹配任何数字中的一个或多个。

我们还想删除数字后面的空格。 [[:blank:]]*匹配零个或多个空格或制表符的任意组合。

过去,我们可能使用[0-9]来表示数字。使用现代unicode字体,这已不再安全。 [:digit:]]将匹配unicode字体中的所有数字,仅匹配数字。

答案 1 :(得分:0)

要求救援!

awk '{print $2}'

只会打印第二个字段。您可以使用cut

实现相同的目标
cut -d" " -f2