我有一个包含以下内容的文件:
CLASS
1001
CATEGORY
11 12 13 15
16 17
CLASS
3101
CATEGORY
900 901 902 904 905 907
908 909
910 912 913
CLASS
8000
CATEGORY
400 401 402 403
我喜欢使用perl或awk重新格式化以获得以下结果:
1001 11&12&13&15&16&17
3101 900&901&902&904&905&907&908&909&910&912&913
8000 400&401&402&403
我们将不胜感激。 (我曾经用excel VBA做过),但这次我想用perl或awk简化它。提前致谢。 :)
答案 0 :(得分:2)
perl -lne'
BEGIN{ $/ ="CLASS"; $" ="&" }
($x, @F) = /\d+/g or next;
print "$x @F"
' file
输出
1001 11&12&13&15&16&17
3101 900&901&902&904&905&907&908&909&910&912&913
8000 400&401&402&403
答案 1 :(得分:0)
另一个awk
版本
awk '/CLASS/ {c=1;f=0;if (NR>1) print a;next} c {a=$0 " ";c=0} /CATEGORY/ {f=1;c=0;next} f {gsub(/ /,"\\&",$0);a=a $0} END {print a}' file
1001 11&12&13&1516&17
3101 900&901&902&904&905&907908&909910&912&913
8000 400&401&402&403