我在这种格式的文件中有数据,如下所示
"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脚本编写。
请帮忙。
答案 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