替换\ n“,用”,

时间:2014-01-28 23:19:15

标签: bash shell sh

我在这种格式的文件中有数据,如下所示

"253539","","Company1 Name  
","0","1"
"255229","","Ramu ","0","1"
"253548","","Mater Name/Id 
","0","1"
"255229","","Ram Lakh","0","1"
"253619","","CHild Name/Ids 
","0","1"

每行都附加\ n。

如何在shell脚本中将\ n“替换为”,以将输出作为

"253539","","Company1 Name/Id  ","0","1"
"255229","","Ramu ","0","1"
"253548","","Mater Name/Id ","0","1"
"255229","","Ram Lakh","0","1"
"253619","","CHild Name/Id ","0","1"

需要自动化流程,因此必须使用shell脚本编写。

请帮忙。

4 个答案:

答案 0 :(得分:1)

不确定在shell中轻松完成此操作,但我做了一个抛弃Perl脚本来执行此操作:

perl -e 'foreach (<>) { chop; print; print "\n" if /"$/ }' < mydata.csv

仅当行以"结尾时才输出换行符。

答案 1 :(得分:0)

可以做类似

的事情
#!/bin/bash

while read -r line; do
 [[ $line =~ '"'$ ]] && echo "$line" || echo -n "$line"
done < file

e.g。在您的输入文件

> ./abovescript
"253539","","Company1 Name","0","1"
"255229","","Ramu ","0","1"
"253548","","Mater Name/Id","0","1"
"255229","","Ram Lakh","0","1"
"253619","","CHild Name/Ids","0","1"

答案 2 :(得分:0)

使用awk即可:

$ awk '/"$/ {print a$0; a=""; next} {a=$0}' file
"253539","","Company1 Name  ","0","1"
"255229","","Ramu ","0","1"
"253548","","Mater Name/Id ","0","1"
"255229","","Ram Lakh","0","1"
"253619","","CHild Name/Ids ","0","1"

它的作用是存储在a行中,以防它不以"结尾。如果是,则打印存储的行加上当前行。

答案 3 :(得分:0)

如果@ fedorqui的答案可以被接受,那么这里是更短的代码。

awk '{printf $0 (/"$/?RS:X)}' file