awkのprintfやbashのprintfを使って、列のすべての数字を小数点以下の1桁に丸めるきちんとした方法がたくさんあるようです。ただし、列のすべての数字を小数点以下の1桁に減らす(丸めずに)、同じように簡単な方法が見つかりません。これまでにソートする最も簡単な方法は、小数点以下の2桁に丸め、列1の各行の最後の文字を削除することです。誰でも良い方法がありますか?入出力の例は次のとおりです。
入力する
123.434
1456.8123
2536.577
345.95553
23643.1454
出力
123.4
1456.8
2536.5
345.9
23643.1
答え1
作業がとても簡単です。grep
$ cat ip.txt
123.434
1456.8123
2536.577
345.95553
23643.1454
$ grep -o '^[0-9]*\.[0-9]' ip.txt
123.4
1456.8
2536.5
345.9
23643.1
^
行の始まり[0-9]*
0個以上の数字\.
リテラルドット文字マッチング[0-9]
数字と一致-o
オプションにより、grep
一致する部分だけが印刷され、残りの文字は効果的に削除されます。
追加の列がある場合sed
$ cat ip.txt
123.434 a
1456.8123 b
2536.577 c
345.95553 d
23643.1454 e
$ sed -E 's/^([0-9]*\.[0-9])[0-9]*/\1/' ip.txt
123.4 a
1456.8 b
2536.5 c
345.9 d
23643.1 e
-E
拡張正規表現の使用- 必要なパターンは交換区間に取り込んで
()
使用\1
[0-9]*
キャプチャグループが削除された後
追加資料: