使用awk / sed删除双新行

时间:2010-11-17 10:29:04

标签: file unix sed

嘿大家好 我有一个充满数据的文件,每行包含类似于“755545; 45634; 1244”的内容。有时在某处可能会出现未知数量的额外新行,这是我不想要的。 例如:

256163;16816;1651
16156;165165;1165

15153;135135;15351
15153;1351;8



165;15313;153513
254;45;45

期望的输出:

256163;16816;1651
16156;165165;1165    
15153;135135;15351
15153;1351;8
165;15313;153513
254;45;45

使用unix中的awk / sed实用程序可以轻松完成吗?

5 个答案:

答案 0 :(得分:9)

如果“空”行上没有空格,@ Luixv的答案是正确的。 如果存在空格,请改为使用:

sed '/^[ \t]*$/d'

在括号内的\ t之前有一个空格,即[space \ t]

如果这不起作用,您可能会遇到换行问题。做一个:

$ file test_file
test_file: ISO-8859 text, with CRLF, LF line terminators

如果您获得上述输出,请使用以下命令将文件转换为unix:

$ dos2unix test_file

答案 1 :(得分:6)

sed'/ ^ $ / d'

答案 2 :(得分:1)

sed -nre "s/([^$])/\1/p" input

答案 3 :(得分:1)

sed -n 's/^[ ,\t]*$/!p' filename

答案 4 :(得分:0)

如果您没有安装ssed super_sed解决,请安装它。

ssed -R -e '/(^$|\s)/ d' yourFile

cat yourFile| ssed -R -e '/(^$|\s)/ d'

快乐的发送

PS:即使您在ReqExp中有标签或\r \t \n因此\s,也会有效。

\r = Return Carriage
\n = New Line
\t = Tab