1

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

示例:一个 csv 文件框架,在一列中有新行。我需要删除这个新行,但不是文本,也不是每行之间的新行。

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

应该看起来像:

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

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

感谢您的帮助

4

5 回答 5

1

如果它真的只是连接每一行的问题,你可以这样做:

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

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

于 2013-03-07T21:55:34.230 回答
1

尝试这个:

awk '{if ($0~/;$/)print $0;else printf $0}' file
于 2013-03-07T21:57:29.470 回答
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;
于 2013-03-07T23:40:24.967 回答
0

如果您的行总是拆分,-那么您可以使用以下sed脚本:

sed ':a;N;$!ba;s/-\n/-/g' file.txt
于 2013-03-07T21:53:59.613 回答
0

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

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

它产生:

row1-col1;row1-col2;
row2-col1;row2-col2;
于 2013-03-07T21:55:22.230 回答