私のファイル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