我正在尝试重新格式化一个大文件。每行的前6列都可以,但行中的其余列需要以2为增量组合,其间带有“/”字符。
示例文件(仅显示几列,但在实际文件中有更多列):
1 1 0 0 1 2 A T A C
分为:
1 1 0 0 1 2 A/T A/C
到目前为止,我一直在尝试awk,这就是我所在的地方......
awk '{print $1,$2,$3,$4,$5; for(i=7; i < NF; i=i+2) print $i+"/"+$i+1}' myfile.txt > mynewfile.txt
答案 0 :(得分:3)
请试试这个:
awk '{print $1" "$2" "$3" "$4" "$5" "$6" "$7"/"$8" "$9"/"$10}' myfile.txt > mynewfile.txt
答案 1 :(得分:3)
awk '{for(i=j=7; i < NF; i+=2) {$j = $i"/"$(i+1); j++} NF=j-1}1' input
答案 2 :(得分:1)
“+”是算术“和”运算符,通过简单地列出彼此相邻的字符串来完成字符串连接,即获得你要写的字符串“foobar”:
"foo" "bar"
不
"foo" + "bar"
无论如何,试试这个:
awk -v ORS= '{print $1,$2,$3,$4,$5,$6; for(i=7;i<=NF;i++) print (i%2?OFS:"/") $i; print "\n"}' myfile.txt > mynewfile.txt