如何检查行尾的模式并删除新行

时间:2014-11-11 19:48:33

标签: unix

我正在尝试清理看起来像这样的文件:

    insert....;
    update.....;
    del
    ete.......;
    in
    sert........;

我想删除不以分号结尾的行的新行字符,并在清理文件后应该:

    insert.......;
    update.......;
    delete.......;
    insert........;

2 个答案:

答案 0 :(得分:1)

你的意思是这样吗?

$ cat in
insert....;
update.....;
del
ete.......;
in
sert........;
$ awk '{if ($0 ~ /;$/) {print} else {printf ("%s", $0)}}' in
insert....;
update.....;
delete.......;
insert........;

答案 1 :(得分:0)

作为@Jens答案的替代方案,我使用了sed

$ cat test.txt 
insert....;
upd
ate.....;
del
ete.......;
insert........;

$ sed -e ':a;N;$!ba;s/\n//g' -e 's/;/;\n/g' < test.txt > test2.txt

$ cat test2.txt 
insert....;
update.....;
delete.......;
insert........;

这确实会在文件末尾产生一个空白行