awk は、複数のテキストファイルから特定の数値範囲に一致する行を抽出します。

awk は、複数のテキストファイルから特定の数値範囲に一致する行を抽出します。

たとえば、タブで区切られたテキストファイルには、次の2つの列があります。

blah    ABC_DE_23154_e53G_12
blah    DEF_GH_23165_f35H_36
blah    CED_BF_56412_c56T_21

次のawkスクリプトを使用して、2番目の下線の後の特定の範囲(23153から23167の間)に属する2番目の列の3番目の数字と一致する行を抽出します(これは機能しません)。

awk -F "_" '$2>23153 && $2<23167' *.txt >> output.txt

"output.txt"ファイル内の出力は次のようになります。

blah    ABC_DE_23154_e53G_12
blah    DEF_GH_23165_f35H_36

各ファイルには、約8000行のデータを含む約600のテキストファイルがあります。

ありがとう、Plasma33

ベストアンサー1

$2最初の問題はawkスクリプトにあると思います。 with$2は 2 番目の列 (DE、GH、BF、...) で、比較する数値がある 3 番目の列ではないからです。

それでは条件がなければならず、条件が満たされたら何をしたいかを決めなければなりません。

awk -F'_' '($3>23153 && $3<23167){print}' *.txt >> output.txt

には条件があり、()には動作があります{}

編集する:

コメントで述べたように、{print}アクションはデフォルト値なので、awkスクリプトをさらに簡素化できます。

awk -F'_' '($3>23153 && $3<23167)' *.txt >> output.txt

おすすめ記事