2

私には難しすぎる問題がありますが、awkで非常に簡単に解決できると信じています。
私のデータは次のようになります。

8377885 8384365 8385357 8385877 @ 8378246 8384786 8385450 8386102
66999065 66999928 67091529 @ 66999090 67000051 67091593

ちょうど真ん中に「@」があるのは別の行です。1
.「@」で区切られた行要素を最初から最後まで結合します。
2.結合されたすべての要素を列として印刷します。
推奨される出力は次のようになります。

8377885 8378246
8384365 8384786 8385357 8385450 8385877
8386102 8390268
8390996
66999065
66999090
66999928 67000051
67091529 67091593

誰かがこれで私を助けてくれることを願っています。

4

2 に答える 2

5

ここにワンライナーがあります:

awk 'BEGIN { FS = "[@ ]+" } { for (i=1;i<=NF/2;i++) { printf "%s %s\n", $i, $(NF/2+i) } }' infile

その結果、次のようになります。

8377885 8378246
8384365 8384786
8385357 8385450
8385877 8386102
66999065 66999090
66999928 67000051
67091529 67091593
于 2012-10-03T10:22:38.103 に答える
4

以下で動作します:

awk -F"@" '{n=split($1,a," ");split($2,b," ");for(i=1;i<=n;i++)print a[i],b[i]}' your_file

以下でテスト:

> awk -F"@" '{n=split($1,a," ");split($2,b," ");for(i=1;i<=n;i++)print a[i],b[i]}' temp
8377885 8378246
8384365 8384786
8385357 8385450
8385877 8386102
66999065 66999090
66999928 67000051
67091529 67091593
于 2012-10-03T10:42:49.833 に答える