我尝试使用awk或sed删除\ n当它们是两个标记时。
例如: 一行中包含新行的csv文件框架。我需要删除这一新行而不是文本,而不是每一行之间的新行。
row1-col1;row1-
col2;
row2-col1;row2-
col2;
应该是这样的:
row1-col1;row1-col2;
row2-col1;row2-col2;
我尝试了很多没有成功的过滤器,现在我有点困惑。
感谢帮助
答案 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;