私は要約しようとしました:
$ awk -F":" '{ print $7 ":" $1 }' /etc/passwd
次のコマンドライン引数で指定された区切り文字、入力ファイル、および列の選択を使用してスクリプトに変換します。
#! /bin/bash
# parse command line arguments into variables `delimiter`, `cols` and `inputfile`
...
awk -F"$delimiter" '{ print '"$cols"' }' "$inputfile"
入力はファイルから来るので、STDIN入力も機能します。私は列を順番に別々のパラメータとして指定することを好みます。出力区切り記号は、例のコマンドに示すように、入力区切り記号と同じです。
このようなスクリプトをどのように書きますか?
ベストアンサー1
あなたはそれを使用することができますバッシュgetopts
(少し下にスクロールする必要があります。)コマンドライン解析を実行します。
#!/bin/bash
delimiter=:
first=1
second=2
while getopts d:f:s: FLAG; do
case $FLAG in
d) delimiter=$OPTARG;;
f) first=$OPTARG;;
s) second=$OPTARG;;
*) echo error >&2; exit 2;;
esac
done
shift $((OPTIND-1))
awk -F"$delimiter" -v "OFS=$delimiter" -v first="$first" -v second="$second" '{ print $first OFS $second }' "$@"