我有一个文件使用\ 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
!
答案 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'