ファイルから awk 文字列を grep し、文字列ファイルの別の部分に書き込みます。

ファイルから awk 文字列を grep し、文字列ファイルの別の部分に書き込みます。

私のファイルaaaには5行があります。

01_AAA-11-ID22
02_BBB-33-ID44
03_CCC-55-ID66
.
.

私はbigfile.txtファイルの下線の後にあるものをgrepしようとしています。

for i in $(cat aaa)
do
A= $(awk -F '_' '{print $1}' $i)
B= $(awk -F '_' '{print $2}' $i)
grep $B bigfile.txt > $A
done

~しようとする

grep AAA-11-22 bigfile.txt > 01

しかし、うまくいかないようです。私のエラーコードは

awk:コマンド。行:1:致命的:読み取るために '01_AAA-11-22'ファイルを開くことができません(そのファイルまたはディレクトリはありません)。

アドバイスが必要です。ありがとう、

ベストアンサー1

$iファイルで開こうとするのではなく、echoを使用してください。

for i in $(cat aaa)
do
  A= $(echo $1 | awk -F '_' '{print $1}')
  B= $(echo $i | awk -F '_' '{print $2}')
  grep $B bigfile.txt > $A
done

しかし、興味があれば、awkこのforループを1行のコードに完全に置き換えることができます。

awk -F '_' '{system("grep "$2" bigfile.txt > "$1)}' aaa

おすすめ記事