删除两个字符之间的\ n(新行)

时间:2013-03-07 21:45:35

标签: csv sed awk

我尝试使用awk或sed删除\ n当它们是两个标记时。

例如: 一行中包含新行的csv文件框架。我需要删除这一新行而不是文本,而不是每一行之间的新行。

row1-col1;row1-
col2;
row2-col1;row2-
col2;

应该是这样的:

row1-col1;row1-col2;
row2-col1;row2-col2;

我尝试了很多没有成功的过滤器,现在我有点困惑。

感谢帮助

5 个答案:

答案 0 :(得分:1)

如果真的只是连接其他每一行,你可以这样做:

awk '(NR % 2) == 1 { saved=$0; next; } { printf("%s%s\n", saved, $0); }' file.txt

第一个子句保存每个奇数行而不打印,第二个子句打印保存行后跟当前行,没有插入换行符。

答案 1 :(得分:1)

试试这个:

awk '{if ($0~/;$/)print $0;else printf $0}' file

答案 2 :(得分:0)

如果您的行始终在-分割,那么您可以使用以下sed脚本:

sed ':a;N;$!ba;s/-\n/-/g' file.txt

答案 3 :(得分:0)

使用sed的一种方法。它会将所有输入追加到最后一行($!),然后删除前面有-的所有换行符。

sed -n ':a ; $! { N; b a }; s/-\n/-/g ; p' infile

它产生:

row1-col1;row1-col2;
row2-col1;row2-col2;

答案 4 :(得分:0)

$ cat file                      
row1-col1;row1-
col2;
row2-col1;row2-
col2;

$ awk '{ORS=(NR%2?"":"\n")}1' file
row1-col1;row1-col2;
row2-col1;row2-col2;