使用awk组合单个文件中的列

时间:2013-08-06 23:57:57

标签: awk

我正在尝试重新格式化一个大文件。每行的前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

3 个答案:

答案 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