(g)awk:他のスクリプトの式を置き換える

(g)awk:他のスクリプトの式を置き換える

複数の異なるスクリプトで再利用する一般的なスクリプトを作成しています。いずれの場合も、共通スクリプトからN番目のフィールドを抽出する必要があります。場合によっては、スクリプトから二重引用符を削除する必要があります。フィールド区切り記号も状況によって異なります。

awk理想的には、文全体を次の一般的なスクリプトに渡したいと思います。

スクリプト1.sh:

 generic_script.sh "{print $1}"

Script2.sh:

 generic_script.sh "BEGIN {FS=","} {gsub(/"/, "", $1);  print $1}"

汎用script.sh

 awk_expression="$1"
 awk '$awk_expression' file_to_process.txt

"この質問の読みやすさのために、意図的にscript2.shとエスケープを省略しました。)$

これらの共通スクリプトを作成し、両方のスクリプトに正しいパラメータを提供する「十分に正しい」方法は何ですか?

どちらも私awkにとって効果的ですgawk。私はMacOS HighSierra 10.13.6を使用しています。

答え1

これはそれを上書きする必要があります。

$ cat generic_script.sh
#!/bin/bash
awk_expression="$1"
awk "$awk_expression" file_to_process.txt
$ cat file_to_process.txt
"foo","bar"
$ ./generic_script.sh '{ print $1 }'
"foo","bar"
$ ./generic_script.sh 'BEGIN {FS=","} {gsub(/"/, "", $1);  print $1}'
foo
$

関連情報