1. ホーム
  2. perl

[解決済み] perl で awk コマンドを実行する

2022-02-18 17:22:47

質問内容

以下のようなタブ区切りファイル(ダミー)があります。

a  b
a  b 
a  c
a  c
a  b

を書こうとしているのですが awk コマンドを、file.txt を作成する perl スクリプトの中で実行します。

awkコマンドは.

$n=system(" awk -F"\t" '{if($1=="a" && $2=="b") print $1,$2}' file.txt|wc -l ")

Error :
comparison operator :error in '==' , ',' between $1 and $2 in print }'

awk スクリプトはコマンドラインでは正常に動作していますが、スクリプト内部で実行するとエラーが発生します。

awk コマンドに構文エラーは見当たりません。

どのように解決するのですか?

を実行することで何を実現しようとしているかはさておき。 awk の中から perl (後者自体を使っても実現可能なので)このような場合は q 演算子を使用します。

$cmd = q(awk -F"\t" '{if($1=="a" && $2=="b") print $1,$2}' file.txt | wc -l);
$n = system($cmd);

ダブルクォートを使用すると、変数が挿入されるので、それをエスケープする必要があることに注意してください。