0

awk によって読み取られた現在の行に、使用している文字列が含まれているかどうかを確認しています。

if (/.*abc.*lab.*/)
 {
 }

しかし、行の文字列が例えば

[abc ls:lab=123 ....]..

その後、文字列は正しく検索されますが、行に次のものが含まれている場合

[abc ls:key=xyz xyz. ls:lab=123 ...]..

その行は一致しても検索されません.*abc.*lab.*

検索中に間違いを犯した場合、誰かが私を修正してもらえますか?

4

1 に答える 1

1

以下を使用できるはずです。

awk '/abc.*lab/ { print $0 }'

$0パターンは行全体に対して照合されます。ただし、次のように記述した場合も機能するはずです。

awk '{if (/.*abc.*lab.*/) print $0}'

またはより単純な正規表現で:

awk '{if (/abc.*lab/) print $0}'

ifの中にがない場合は、 の{ ... }構文に問題がありawkます。

次のようなデータ ファイルがあるとします。

[abc ls:lab=123 ....]..
then the string is searched correctly, but if the line contains e.g.

[abc ls:key=xyz xyz. ls:lab=123 ...]..

何よりもスクリプトは以下を生成します。

[abc ls:lab=123 ....]..
[abc ls:key=xyz xyz. ls:lab=123 ...]..
于 2013-05-03T04:54:21.830 に答える