デフォルトの10ファイルの2進数(0,1)数にのみGrapを使用する

デフォルトの10ファイルの2進数(0,1)数にのみGrapを使用する

2進数(0,1)と他の10進数(0-9)を含むファイルがあるとします。

010... 10567
011... 23678
...

など。

上記の例は実際にこれを正確に表現したものではありませんが、それは要点ではありません。 (単にこの特定の事例を説明するためのものです。)

ファイル/出力で「数字」を見つける方法はすでにわかっています。

grep '[0-9]*'

これを使用してください:

grep '[0-1]*'

10進数の一部である1と0が強調表示/選択されます。

それで、同じことをどうするべきかわかりません。ただ二進数(0,1)。したがって、出力例にはバイナリのみが表示されます(バイナリは常に同じ列にあります)。

これを行う方法はありますか?

ベストアンサー1

次に、列のデータを調べて、col列のデータに1と0のみが含まれるたびに印刷します。

col番号はコマンドラインに表示されます(1ここではその値を使用します)。

awk -v col=1 '$col ~ /^[01]+$/ { print $col }' file

バイナリが常にゼロで始まることがわかっている場合は、式をから^[01]+$^0[01]*$0の後に任意の数の1および/または0がオーム)に変更できます。もしあなたならまた2進数は常に3桁の数字であることを知っている場合、または^0[01][01]$を使用してください^0[01]{2}$

テスト:

$ cat file
010 10567
011 23678
030 10567
012 23678
$ awk -v col=1 '$col ~ /^[01]+$/ { print $col }' file
010
011

おすすめ記事