たとえば、タブで区切られたテキストファイルには、次の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