gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:50:01 26 4
gpt4 key购买 nike

我尝试在我的树莓派上使用 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}//' - 仅删除前 2 个数字,但当您的数字超过 10 个时,它将不起作用。

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

最佳答案

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

$ 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 字体中的所有数字,并且仅匹配数字。

关于linux - 使用sed删除文本文件中的编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32553075/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com