我想从文件中删除所有内容,这样只剩下数字1,2,3,4和5。应保留换行符。如何从文件中删除其他所有内容?
答案 0 :(得分:5)
这样的事情:
sed -i 's/[^1-5]//g' file
这是一个小测试:
$ echo $'ab129c\n1d3e5fqq9cm3275\ncn730m271nv05482m1'
ab129c
1d3e5fqq9cm3275
cn730m271nv05482m1
$ echo $'ab129c\n1d3e5fqq9cm3275\ncn730m271nv05482m1'|sed 's/[^1-5]//g'
12
135325
3215421
答案 1 :(得分:2)
tr
应该比sed
更有效率。复制icyrock的测试:
$ echo $'ab129c\n1d3e5fqq9cm3275\ncn730m271nv05482m1' | tr -dc "1-5\n"
12
135325
3215421
tr
有一个缺点:它无法对现有文件进行就地编辑(如sed -i
所做的那样);如果这是你想要的,你必须写一个临时文件,然后用原来的文件替换原来的文件:
tr -dc "1-5\n" <file.txt >tempfile.txt && mv tempfile.txt file.txt
答案 2 :(得分:1)
我是这样做的:
sed -r 's/[^12345]//g' <file>
将它转储到屏幕,您可以使用以下命令写入文件
sed -r 's/[^12345]//g' <file> > <new_file>
或者您可以使用
直接编辑文件sed -i -r 's/[^12345]//g' <file>