5

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

3 回答 3

5
awk '{for(i=j=7; i < NF; i+=2) {$j = $i"/"$(i+1); j++} NF=j-1}1' input
于 2013-08-07T00:14:17.817 回答
3

请试试这个:

awk '{print $1" "$2" "$3" "$4" "$5" "$6" "$7"/"$8" "$9"/"$10}' myfile.txt > mynewfile.txt
于 2013-08-07T00:06:42.733 回答
1

"+" 是算术 "and" 运算符,字符串连接是通过简单地列出彼此相邻的字符串来完成的,即得到你要写的字符串 "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
于 2013-08-07T01:38:21.957 回答