2016-02-11 117 views
1

我有搜索一种方法来做到这一点,我发现了类似的问题,但没有什么符合这一点。删除线只有一个逗号

我有以下文本CVS文件:

nfoabc,infidel 
infoghi,infojkl 
, 
, 
, 
inferno,infopqr 
infoabc,infodef 
, 
, 
, 

所需的输出是:

infoabc,infidel 
infoghi,infojkl 
inferno,infopqr 
infoabc,infodef 

我不知道是否有过滤用单线条的方式,并没有其他人物......我认为这是我遇到困难的地方。

任何援助将不胜感激。 TIA。

+1

的[如何跳过匹配串线]可能的复制(http://stackoverflow.com/问题/ 6684857/how-to-skip-lines-matching-a-string) –

+0

谢谢大家。我做错了没有写回到一个文件,理想情况下,我会覆盖现有的文件,但我可以处理这个问题。谢谢! – cducasse

+0

@cducasse:'cmd文件> tmp && mv tmp文件'。用你想执行的任何命令替换'cmd'。 –

回答

3
$ grep -v '^,$' file 
infoabc,infidel 
infoghi,infojkl 
inferno,infopqr 
infoabc,infodef 

或这个特定的输入文件,其中有1个或0逗号:

$ grep '[^,]' file 
infoabc,infidel 
infoghi,infojkl 
inferno,infopqr 
infoabc,infodef 
0

awk来救援!

$ awk '!/^,$/' file 

nfoabc,infidel 
infoghi,infojkl 
inferno,infopqr 
infoabc,infodef 
1

如果你想编辑文件,你可以随时使用ed

ed -s file <<< $'g/^,$/d\nw' 
+0

酷!你可以用MS-DOS'edlin'吗? ;-) –

+0

@MarkSetchell我不知道'edlin'是什么,对不起':('。 –

+1

这是我所知道的唯一一个比'ed'更简洁的编辑器! –