用逗号分隔符替换换行符

时间:2018-04-04 11:44:16

标签: shell awk sed

我有一个文本文件,该记录采用以下格式。请注意,名称,ID和等级部分中没有空文件。

"NAME","STUDENT1"
"ID","123"
"RANK","10"
"NAME","STUDENT2"
"ID","124"
"RANK","11"

我必须将上述文件转换为以下格式

"STUDENT1","123","10"
"STUDENT2","124","11"

据我所知,这可以通过读取记录并将其写入另一个输出文件来使用shell脚本来实现。但这可以使用awk或sed吗?

5 个答案:

答案 0 :(得分:1)

$ awk -F, '{ORS=(NR%3?FS:RS); print $2}' file
"STUDENT1","123","10"
"STUDENT2","124","11"

答案 1 :(得分:0)

使用awk

awk -F, '$1=="\"RANK\""{print $2;next}{printf "%s,",$2}' file

答案 2 :(得分:0)

使用awk,每3行打印换行符:

awk -F, '{printf "%s",$2;if (NR%3){printf ","}else{print""};}'

答案 3 :(得分:0)

关注awk也可以帮助您。

awk -F, '{ORS=$0~/^"RANK/?"\n":FS;print $NF}'  Input_file

答案 4 :(得分:0)

使用sed

sed -E 'N;N;;y/\n/ /;s/([^,]*)(,[^ ]*)/\2/g;s/,//' infile