awkからシステムコマンドを呼び出すことができることは非常に便利です。しかし、正規表現のシェル拡張を使用しようとするとうまくいかないことがわかります。
これは、最近Linuxで予想されるように、awkが/bin/bashの代わりに/bin/shを呼び出すためです。
awkでシステムを呼び出すときに拡張正規表現が機能するようにするにはどうすればよいですか?
ベストアンサー1
awkは完璧に動作することができますが、なぜbashでそのように多くのことをする必要があるのかわかりません。
BEGIN {
filename[0]="/media/Pan/test-data/The_long_file.gz";
filename[1]="/media/Pan/test-data/The_long_file";
for (n=0; n<2; n++) {
print "Contents of file: " filename[n];
if (filename[n] ~ /\.gz$/) {
command = "gunzip --to-stdout " filename[n]
while (( command | getline file_contents ) > 0 ) {
print file_contents
}
close(command)
}
else {
while (( getline line < filename[n]) > 0 ) {
print line
}
}
}
}