2014-01-28 59 views
1

我有这个格式的文件数据低于替换 n“用”,

"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追加到它。

我如何可以替换\ n“到”,在shell脚本得到的输出作为

"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脚本编写。

请帮忙。

回答

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存储的情况下,它不会与"结束线。如果存在,它将打印存储的行和当前行。

1

不知道有关在外壳很容易这样做,但我做了一个扔掉的Perl脚本来做到这一点:

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

它通过输出只有在订单中"结尾的换行符。

0

可以做类似

#!/bin/bash 

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

例如您的输入文件

> ./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" 
0

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

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