Bashを使用してファイルにパラメータを追加する

Bashを使用してファイルにパラメータを追加する

bashを使用してクライアントSeat_numを増やす方法は?私はこのファイルを持っています:

$ cat test
    client1
    name="", possition="", seat_num=""
    client2
    name="", possition="", seat_num=""

この増分が必要です。

client1
name="", possition="", seat_num="1"
client2
name="", possition="", seat_num="2"

このアプローチを試しましたが、目的の効果を得られませんでした。

$ while read -r line; do i=1;echo $line|sed -e 's/seat_num=""/seat_num="$i"/';((i++)); done <<< "$(grep -A 2 client test)"
        client1
        name="", possition="", seat_num="$i"
        client2
        name="", possition="", seat_num="$i"

ベストアンサー1

使用awk:

awk 'BEGIN{FS=OFS="\""} /seat_num=/{$6=++n}1' test
  • FS=OFS="\""入力フィールドと出力フィールドの区切り記号をに設定します"
  • seat_num=連続して見つかったら、6番目のフィールドをに変更します++n
  • var=++nこれは最初に増加してnから設定することを意味しますvar。対照的に、後でvar=n++設定されvar、増加します。の定義されていない変数のawk値は0++n最初にインクリメント(-->)する必要があります。

-i inplaceファイルを適切に編集するには、可能であれば使用できます。
利用できない場合は追加してください。 > test.tmp && mv test.tmp test

おすすめ記事