次の方法でデータを整理するのに役立ちます。私の入力データは次のとおりです。
入力ファイル:
1 2 1 0.6007 0.1 0.3 0.2 0.7 0.7 0 2 0.3073 0.1 0.1 0.2 0.4 0.7 0.5
2 2 1 0.4022 0.1 0.3 0.2 0.7 0.7 0 2 0.5085 0.1 0.1 0.2 0.4 0.7 0.5
3 2 1 0.0029 0.1 0.3 0.2 0.7 0.7 0 2 0.9078 0.1 0.1 0.2 0.4 0.7 0.5
4 2 1 0.0692 0.1 0.3 0.2 0.7 0.7 0 2 0.8805 0.1 0.1 0.2 0.4 0.7 0.5
私が望む出力ファイルは次のとおりです。
結果ファイル:
1 2
0.6007 1 0.1 0.3 0.2 0.7 0.7 0
0.3073 2 0.1 0.1 0.2 0.4 0.7 0.5
2 2
0.4022 1 0.1 0.3 0.2 0.7 0.7 0
0.5085 2 0.1 0.1 0.2 0.4 0.7 0.5
3 2
0.0029 1 0.1 0.3 0.2 0.7 0.7 0
0.9078 2 0.1 0.1 0.2 0.4 0.7 0.5
4 2
0.0692 1 0.1 0.3 0.2 0.7 0.7 0
0.8805 2 0.1 0.1 0.2 0.4 0.7 0.5
ベストアンサー1
また行こう slm:)
コマンドラインからのPerlの同様のメカニズム:
perl -ane 'print "$F[0] $F[1]\n $F[3] $F[2] @F[4..9]\n" .
" $F[11] $F[10] @F[12..17]\n"' inputfile
-n
inputfile
各行をループとして扱います。-a
フィールド区切り文字(デフォルトでは空白)を中心に各行を分割し、それを特殊な配列に割り当ててから指定され@F
た-e
perlコマンドに渡します(必要な記号にスペースと改行文字を使用して必要な順序で要素を印刷するだけです) )。
これをPerlスクリプトファイルに入れます:
#! /usr/bin/perl -an
print "$F[0] $F[1]\n $F[3] $F[2] @F[4..9]\n" .
" $F[11] $F[10] @F[12..17]\n";
Chmodファイル(chmod u+x perlscript
)を入力して./perlscript inputfile
。
> outputfile
出力を別のファイルに入れる必要がある場合は、コマンドの最後に入れます。 (これはコマンドラインで直接使用された最初の例と同じです。)
./perlscript inputfile > outputfile