删除行包含文件中的\ N.

时间:2015-08-11 08:26:00

标签: regex bash awk sed

我有一个文件使用\ N表示缺少数据。 如何删除具有此野性字符的行。

我使用了sed '/\\N/d',但它似乎删除了我预期的更多行。

输入:

AA \N
BB .3
CC .4
DD \N

由于sed '/\\N/d'LC_ALL=C grep -vF '\N'都会产生相同的结果,因此我无法弄明白。该文件是7G和200M行。删除\N行后,只剩下25M行。使用less检查文件并不表示\N

2 个答案:

答案 0 :(得分:1)

使用grep

$ grep -vF '\N' file
BB .3
CC .4

选项:-v用于反向匹配,-F用于固定字符串搜索(非正则表达式)

答案 1 :(得分:0)

正则表达式的问题在于它将删除包含'\ N'的所有行。

说文件有值

A \ N 0.3

B \ NC 0.4

CC 0.5

DD \ N

即使你想删除'DD \ N'行,其他行也就是说。 A \ N 0.3& B \ NC 0.4也将被删除。

如果'\ N'始终朝向该行的末尾,则可以使用以下正则表达式。 请注意 -r 。这是扩展正则表达式所必需的。

sed -r '/(\\N+$)/d'