シェルスクリプトを使用して数値行を列に配置します。

シェルスクリプトを使用して数値行を列に配置します。

次のような行が多いファイルがあります。

1 jfkdajfd   1 2 3 5
2 fkldfjld   
3 fdkfloaf   9 10
4 fldfldkf 
5 fdskf;ak   12 1 4

私はすべての番号を取得し、ファイルの1列に入れたいと思います。

 1
 2
 3
 5
 9
 10
 12
 1
 4

どうすればいいですか?ありがとう

答え1

努力する

awk '{ for (i = 1; i <= NF; i++) if ($i + 0 == $i) print $i }' < input > output

有効な数字x + 0 == xかどうかをテストし、元の文字列を印刷するために使用します。数値(浮動小数点数、負数、および多くの実装では16進数を含む)が必要なのか、他の数字が必要なのかは、ユーザーによって異なります。xawkawk

答え2

どうですか?

tr -cs 0-9 '[\n*]' < input | grep . > output

関連情報