从CSV文件的字符串列Shell脚本中删除新行字符

时间:2015-08-08 07:59:02

标签: shell csv unix

我的问题与此处提到的问题完全相同

Remove New Line Character from CSV file's string column

但我正在寻找的是shell脚本中的解决方案。我希望在我的文件中用新修改的附加行替换断行。这对我来说是必需的,因为我的csv文件中的RS是换行符。

2 个答案:

答案 0 :(得分:0)

我不知道你的回声如何抑制换行符(选项-n或带有\ c的结束字符串)。当一条线没有以双引号结束时,解决方案就是认为线是不完整的。 您可以将输出重定向到新文件。

while read line; do
        if [[ "$line" = *\" ]]; then
                echo "${line}"
        else
                echo -n "${line}"
        fi
done < input

答案 1 :(得分:0)

你可以试试这个

sed  '/"[^"][^"]*$/ {
:again
N
s/\n//
/"[^"][^"]*$/ b again
}' input_file

/"[^"][^"]*$/搜索未终止的报价

:again - 标签

N - 附加下一行

s/\n// - 删除换行符

/"[^"][^"]*$/ b again - 如果仍有未终止的报价

,则循环播放