从文件中删除引起其换行符的整行

  • 本文关键字:换行符 文件 删除 bash
  • 更新时间 :
  • 英文 :


文件示例:

1 example
2 example
3 example
4 example

如何转换以摆脱2 example,包括其换行符?

期望的结果:

1 example
3 example
4 example

看起来像是grep的工作...

#cat example.txt 
1 example
2 example
3 example
4 example 
#grep -o -E "^[13-4].*$" example.txt 
1 example
3 example
4 example
#grep -o -E "^[134].*$" example.txt > newfile.txt
#cat newfile.txt 
1 example
3 example
4 example

正则表达式:
^= 行首
[134]= 仅数字 1、3 和 4
.*= 所有其余部分
$= 行尾

裸露的bash:

while IFS= read -r line                 # read file line by line
do 
! [[ $line =~ ^2 ]] && echo "$line"   # do not print lines starting with 2
done < file > tmp                       # output to tmp
mv tmp file                             # replace file with tmp

选择不打印的行的条件是选择不以字符2开头的行。您可能希望指定更好的条件。

使用 awk,您可以:

$ awk '/^[^2]/' file                    # > tmp && mv tmp file