以下语句将删除txt文件中的行号:
cat withLineNumbers.txt | sed 's/^.......//' >> withoutLineNumbers.txt
使用以下语句创建输入文件(我理解这一点):
nl -ba input.txt >> withLineNumbers.txt
我知道cat的功能,我知道输出被写入'withoutLineNumbers.txt'文件。但'| sed 's/^.......//''
的部分对我来说并不是很清楚。
感谢您的时间。
答案 0 :(得分:4)
sed正则表达式只是删除每行的前7个字符。正则表达式^.......
表示“行的开头有7个字符”。 sed参数s/^.......//
用空字符串替换上面的正则表达式。
有关详细信息,请参阅sed(1)
手册页。
答案 1 :(得分:0)
sed正在进行搜索和替换。 's'表示搜索,下一个字符('/')是分隔符,搜索表达式是'^ .......',替换表达式是空字符串(即最后两个斜杠之间的所有内容) )。
搜索是正则表达式。 '^'表示匹配行的开头。每个'。'意味着匹配任何角色。因此搜索表达式匹配每行的前7个字符。然后用空字符串替换它。所以sed正在做的是删除每一行的前7个字符。
实现同样思考的更简单方法可能是:
cut -b8- withLineNumbers.txt > withoutLineNumbers.txt
答案 2 :(得分:0)
该sed语句表示删除前7个字符。点“。”意味着任何角色。有一种更简单的方法可以做到这一点
awk '{print $2}' withLineNumbers.txt
你只需要用awk打印出第二列。无需使用正则表达式
如果您的数据有空格,
awk '{$1="";print substr($0,2)}' withLineNumbers.txt