grepとawkを使用して引数が100を超えるファイルから行を抽出する

grepとawkを使用して引数が100を超えるファイルから行を抽出する

ファイルがあり、次の出力ファイルを使用して仕様に従ってスクリプトを生成する必要があります。

入力ファイルには、出力に含める必要がある最初の28行のヘッダーがあります。入力の一部の行には、特定のパラメータZH:すべての値(例:ZH:100またはZH:50)があります。 ZHパラメータがある列は行ごとに異なります。

私の出力ファイルには、ヘッダー行とその値が100を超えるZHパラメータ(ZH:105、ZH:200など)を含む行を含める必要があります。

ZHパラメータを含まない行は省略されます。

答え1

使用headgrep:

(
# get header
head -n 28 file
# grep lines with ZH value > 100
grep -Ew "ZH:.:[1-9][0-9]{2,}" file
) > outfile

答え2

最小限の例がなければ、必要なものを推測することは困難です。

とにかくパラメータを使用して行をawkフィルタリングするには、ZH次のスクリプトが役に立ちます。

awk 'strtonum(gensub(/^.*ZH:.:([0-9]+).*$/, "\\1", "1"))>100' file

これにより、同様のフィールドを含むすべての行が印刷されますZH:<one character>:<some number>

gensubに関連する数字を抽出しますZH。その後、数値に変換され、数値100と比較されます。

関連情報