awk '!/#EXT/ $1' input > output
不会删除包含#EXT的所有行。输出为空白。我使用的是os x 10.10。 输入文件是:
#EXTM3U
#EXTINF:654,filenameSong1.aiff
/Users/myname/Music/folder1/filenameSong1.aiff
#EXTINF:198,filenamesong2.mp4
/Users/myname/Music/folder1/subfolder2/filenameSong2.mp4
#EXTINF:217,filenameSong3.mp3
/Users/myname/Music/folder1/subfolder3/filenameSong3.mp3
#EXTINF:341,filenameSong4.mp4
/Users/myname/Music/folder1/subfolder3/filenameSong4.mp4
答案 0 :(得分:0)
你可以这样做:
awk '!/^#EXT/' file
条件返回1(真)时打印一行。当/^#EXT/
(或/#EXT/
,如果您愿意)成功时,它会返回1,但!
会取消。
!/#EXT/ $1
返回!/#EXT/
与第一个字段$1
相连的结果,因此第一行:0#EXTM3U
被评估为true。这就是你的代码不起作用的原因。
注意:如果文件的换行符是CR,则可以在awk中将其定义为输入记录分隔符,并将输出记录分隔符设置为LF,如下所示:
awk -v RS='\r' -v ORS='\n' '!/^#EXT/' file