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