テーブルを作成しましたが、数字が混乱しています。
0.967662 0.850492 0.935517 325969
1.071937 0.976805 1.086638 526410.1
0.972091 0.871967 0.950352 306079
1.048607 0.925483 1.008793 412640.1
1.002087 0.888653 0.977475 188199
1.147052 1.029975 1.126825 285331.1
1.062427 0.960176 1.040016 282640.1
1.019481 0.886356 0.974687 980210.1
0.973101 0.857897 0.929414 588859
だけでなく、最後の列の数字も反転しています。たとえば、325969.0
実際には必要です0.969523
。
結果は次のようになります。
0.967662 0.850492 0.935517 969523
1.071937 0.976805 1.086638 1.014625
0.972091 0.871967 0.950352 970603
1.048607 0.925483 1.008793 1.046214
1.002087 0.888653 0.977475 991881
1.147052 1.029975 1.126825 1.133582
1.062427 0.960176 1.040016 1.046282
1.019481 0.886356 0.974687 1.012089
0.973101 0.857897 0.929414 958885
この問題をどのように解決しますか?
答え1
perl -lane '$n = reverse pop @F; print join " ", @F, $n' file
0.967662 0.850492 0.935517 969523
1.071937 0.976805 1.086638 1.014625
0.972091 0.871967 0.950352 970603
1.048607 0.925483 1.008793 1.046214
1.002087 0.888653 0.977475 991881
1.147052 1.029975 1.126825 1.133582
1.062427 0.960176 1.040016 1.046282
1.019481 0.886356 0.974687 1.012089
0.973101 0.857897 0.929414 958885
答え2
awkを使用してヘルパー関数を介してフィールドを反転します。
function reverse(str) {
trs=""
for(i=length(str); i > 0; i--) {
trs=trs substr(str, i, 1);
}
return trs
}
{
$4=reverse($4);
print;
}
ファイルに保存し、以下を実行しますawk -f that-file-above < input > output
。
例の入力による結果は次のとおりです。
0.967662 0.850492 0.935517 969523
1.071937 0.976805 1.086638 1.014625
0.972091 0.871967 0.950352 970603
1.048607 0.925483 1.008793 1.046214
1.002087 0.888653 0.977475 991881
1.147052 1.029975 1.126825 1.133582
1.062427 0.960176 1.040016 1.046282
1.019481 0.886356 0.974687 1.012089
0.973101 0.857897 0.929414 958885
答え3
#!/bin/bash
var=$(cat file | column -t | cut -d ' ' -f 7 | rev)
var1=$(cat file | awk '{print $1, $2, $3}')
paste <(echo "$var1") <(echo "$var") --delimiters ' '
注:これは質問テキストに貼り付けられたデータを処理し、元の文書のデータとは異なる場合があります。データに応じて(コマンドawk
と)列の数を調整します。cut