回答編集履歴

1 補足

otn

otn score 34328

2018/05/12 01:24  投稿

`awk '{FS=",";OFS=","}{$2=substr($2,1,4)}1'`だと、`FS`が設定される前に1行目が読み込まれてしまっていますから、`FS`の変更は2行目から効きます。
`awk 'BEGIN{FS=",";OFS=","}{$2=substr($2,1,4)}1'`が正しいです。
```Bash
foo() {
file=$1
ichi=$2
kazu=$3
awk -v "ic=$ichi" -v "kz=$kazu" 'BEGIN{FS=",";OFS=","}{$ic=substr($ic,1,kz)}1' $file
}
```
ですね。
ですね。
`function`は予約語なので、関数名には使えない。`-v`は変数ごとに必要。シェル変数とawk変数の混同。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る