awk
パスに小さなスクリプトを置く方法はありますか?
たとえば、非常に便利な照合操作があります。
// collate-csv.awk
FNR > 1 || NR == 1
あらゆる種類の素晴らしい方法で使用できます。
xargs -a $(find * -name *.csv) awk -F',' -f collate-csv.awk | ...
唯一の問題は、どこでもawkツールを呼び出すことができないことです。実行可能なシェルスクリプトを使用すると、パスのbinフォルダに配置できます。awk
実行不可能なソースファイルをファイルシステムのどこでも使用できるようにするメカニズムはLinuxにありますか?
(「メカニズム」が「ただハンマーで打つのはどうですか?」タイプのパッチワークではないと仮定)
答え1
@Roamiaの答えに加えて、AWKPATH
変数を見つけるディレクトリのリストとして使用することもできます。collate-csv.awk
AWKPATH=${HOME}/include/awk:/some/other/path
export AWKPATH
xargs -a $(find * -name *.csv) awk -f collate-csv.awk -F',' | ...
参考にしてください
.awk
拡張は一貫性がある限り必須ではありません。#!/usr/bin/awk -f
スクリプトがスタンドアロン(非呼び出し)として使用される場合、shebang行は必須ですawk -f
。例えば、- あなたは使用する必要があります
awk -f
(そしてawkは使い方を知っていますが、AWKPATH
bashはそうではありません)
答え2
実行可能なawk
スクリプトを生成して$PATH
mkdir -p "$HOME/bin"
cat >"$HOME/bin/collate-csv <<'x'
#!/usr/bin/awk -f
#
# collate-csv.awk
#
NR == 1 { print }
FNR == 1 { next }
{print}
x
chmod a+x "$HOME/bin/collate-csv"
export PATH="$PATH:$HOME/bin"
これでcollate-csv
他のコマンドのように使用できるようになります
xargs -a $(find * -name *.csv) collate-csv -F',' | ...