ファイルの最後の行が定数テキストの前にある場合は、特定のパターンに一致する項目を印刷するためにawkを使用したいと思います。
たとえば、「c」の値が定数テキストの前の最後の行である場合にのみ印刷したいと思います。
cat file.txt:
a=1
b=2
c=3
...constant text...
3を印刷します。
cat file.txt:
a=1
c=3
b=2
...constant text...
何も印刷しないでください。
どうすればいいですか? awkはそれがファイルの最後の番号であるかどうかをどうやって知ることができますか?
ベストアンサー1
ファイルの最後の行が定数テキストの前にある場合は、特定のパターンに一致する項目を印刷するためにawkを使用したいと思います。
この場合は、次のことを試してください。
awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file
はい
$ cat file1
a=1
b=2
c=3
...constant text...
$ awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file1
3
$ cat file2
a=1
c=3
b=2
...constant text...
$ awk -F= '/constant text/ && name=="c"{print value} {name=$1;value=$2}' file2
$
どのように動作しますか?
-F=
これは、フィールド区切り文字
awk
として使用することを意味します。=
これによりa=1
、または同じフィールドの名前と値を分離できますc=3
。/constant text/ && name=="c"{print value}
constant text
andname
(前の行の最後に設定されているように)がある行に達すると、をc
印刷しますvalue
。name=$1;value=$2
現在の行の場合は、最初のフィールドをとして保存し、
name
2番目のフィールドをとして保存しますvalue
。