bash粘贴不保留换行符
bash paste does not retain line breaks
我的 bash 脚本是从 file1.txt 粘贴的,其中有逐行条目到 CSV 格式。例如:
File1.txt 包含文本:
John
21-2-2015
some city
"108 Brent Street
Ridgewoods
sometown
somecountry"
CSV 上传的转换输出应如下所示:
John,21-2-2015,some city,"108 Brent Street
Ridgewoods
sometown
somecountry"
但是我的代码将其转换为:
John,21-2-2015,some city,"108 Brent Street Ridgewoods sometown somecountry"
我想保留换行符。
我的代码:
paste -sd, file1.txt > file2.csv
您可以试试下面的 Perl 命令。
$ perl -0777pe 's/(?s)"[^"]*"(*SKIP)(*F)|\n(?!$)/,/g' file
John,21-2-2015,some city,"108 Brent Street
Ridgewoods
sometown
somecountry"
添加 -i
参数以保存对该文件所做的更改。
您可以使用 GNU 的 FPAT
功能 awk
cat main.awk
BEGIN {
FPAT = "([^\n]+)|(\"[^\"]+\")"
OFS=","
RS=""
ORS="\n"
}
{ =; print
}
awk -f main.awk <datafile
John,21-2-2015,some city,"108 Brent Street
Ridgewood
sometown
somecountry"
我的 bash 脚本是从 file1.txt 粘贴的,其中有逐行条目到 CSV 格式。例如:
File1.txt 包含文本:
John
21-2-2015
some city
"108 Brent Street
Ridgewoods
sometown
somecountry"
CSV 上传的转换输出应如下所示:
John,21-2-2015,some city,"108 Brent Street
Ridgewoods
sometown
somecountry"
但是我的代码将其转换为:
John,21-2-2015,some city,"108 Brent Street Ridgewoods sometown somecountry"
我想保留换行符。
我的代码:
paste -sd, file1.txt > file2.csv
您可以试试下面的 Perl 命令。
$ perl -0777pe 's/(?s)"[^"]*"(*SKIP)(*F)|\n(?!$)/,/g' file
John,21-2-2015,some city,"108 Brent Street
Ridgewoods
sometown
somecountry"
添加 -i
参数以保存对该文件所做的更改。
您可以使用 GNU 的 FPAT
功能 awk
cat main.awk
BEGIN {
FPAT = "([^\n]+)|(\"[^\"]+\")"
OFS=","
RS=""
ORS="\n"
}
{ =; print
}
awk -f main.awk <datafile
John,21-2-2015,some city,"108 Brent Street
Ridgewood
sometown
somecountry"