1

Awk を使用して、正規表現を使用してレコード全体を照合したいと考えています。デフォルトでは、正規表現マッチングはレコードの一部に対して行われます。

理想的なソリューションは次のとおりです。

  • 使用するフィールド セパレータに関係なく、すべてのフィールドに対して一般的であること。
  • 入力全体を 1 つのフィールドとして扱わず、文字列関数を使用して手動で解析します。
  • 一般的な方法で作業し、たとえば gawk に固有のものではありません。

ただし、外部プログラムを呼び出さずに Awkを使用する限り、すべてのソリューションに関心があります。

例、私は持っています:

$ ls
indata.txt  t1.awk
$ cat indata.txt 
a1010_
1010_
1010_b
$ cat t1.awk 
/[01]*_[01]*/ { print $0 }

私は得る:

$ awk -f t1.awk indata.txt
a1010_
1010_
1010_b

これは私が求めている結果です:

$ awk -f t1.awk indata.txt
1010_
4

2 に答える 2

4

正規表現に開始アンカーと終了アンカーを追加するだけです。

/^[01]*_[01]*$/ { print $0 }
于 2008-12-06T04:21:52.003 に答える
2
$ gawk '/^[01]*_[01]*$/' indata.txt
1010_
于 2008-12-06T04:23:06.633 に答える