当它们是两个标签时,我尝试使用 awk 或 sed 删除 \n 。
示例:一个 csv 文件框架,在一列中有新行。我需要删除这个新行,但不是文本,也不是每行之间的新行。
row1-col1;row1-
col2;
row2-col1;row2-
col2;
应该看起来像:
row1-col1;row1-col2;
row2-col1;row2-col2;
我尝试了许多过滤器都没有成功,现在我有点困惑。
感谢您的帮助
如果它真的只是连接每一行的问题,你可以这样做:
awk '(NR % 2) == 1 { saved=$0; next; } { printf("%s%s\n", saved, $0); }' file.txt
第一个子句保存每个奇数行而不打印,第二个子句打印保存的行后跟当前行,中间没有换行符。
尝试这个:
awk '{if ($0~/;$/)print $0;else printf $0}' file
$ 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;
如果您的行总是拆分,-
那么您可以使用以下sed
脚本:
sed ':a;N;$!ba;s/-\n/-/g' file.txt
一种使用方式sed
。它将所有输入追加到最后一行 ( $!
),然后删除所有带有前面的换行符-
。
sed -n ':a ; $! { N; b a }; s/-\n/-/g ; p' infile
它产生:
row1-col1;row1-col2;
row2-col1;row2-col2;