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 に答える