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