如何在Linux上删除与精确短语匹配的行?

时间:2016-02-15 13:54:23

标签: awk sed

我的文件包含两行Unicode(可能)字符:

▒▒▒▒=

▒▒▒=

我希望从文件中删除这两行。

我搜索并发现我可以使用此命令删除非UTF-8字符:

iconv -c -f utf-8 -t ascii file

但它留下了这两行:

=

=

我无法找到如何删除匹配(不只是包含但匹配)某些短语的行,在我的情况下:=

更新:我发现当我将“=”行重定向到其他文件并打开文件时,它包含不需要的行:^ A = 我无法与sed匹配删除它。

2 个答案:

答案 0 :(得分:1)

这可能适合你(GNU sed):

sed '/^\(\o342\o226\o222\)\+=/d' file

使用:

sed -n l file 

要查找unicode字符的八进制表示,然后使用regexp中的\o...元字符进行匹配。

编辑:

要删除仅包含=的行:

sed '/^\(\o342\o226\o222\)\*=\s*$/d' file

答案 1 :(得分:-1)

以下是清除这些行的命令:

sed -i 's/^=$//g' your_file

如评论中所指定,您还可以使用grep -v '^whatever$' your_file > cleared_file。请注意,此解决方案需要设置不同的输出(cleared_file),而sed - 解决方案允许您“就地”修改内容。