単一ファイルを繰り返し編集

単一ファイルを繰り返し編集

次のステートメントを含むファイルがあります。

myName_tx_1 VARCHAR(255)
myName_in_1 VARCHAR(255)
myName_tx_2 VARCHAR(255)
myName_in_2 VARCHAR(255)
myName_tx_3 VARCHAR(255)
myName_in_3 VARCHAR(255)
myAddress_tx_1 VARCHAR(255)
myAddress_in_2 VARCHAR(255)
etc

私はそれを次のように変更したいと思います:

myName_tx_1 VARCHAR(255)
myName_in_1 VARCHAR(1)
myName_tx_2 VARCHAR(255)
myName_in_2 VARCHAR(1)
myName_tx_3 VARCHAR(255)
myName_in_3 VARCHAR(1)
myAddress_tx_1 VARCHAR(255)
myAddress_in_2 VARCHAR(1)
etc

とにかく、追加の質問は、属性名が「in $」で終わる項目だけを変更したいということです。ここで $ は数値です (例: myName_in_3 VARCHAR(255))。

偶然にも '_in' (インディケータ属性) がペアで出てくるので、n~2 (または FNR%2==0) を実行するのはかなり賢い方法ですが、 '_in$VARCHAR(' を識別する方が良いかどうか疑問に思います。 ?255 )'を変化のモデルにしている。

わかりやすいコードを使用してこれをどのように実行しますか?ファイルが大きくないため、パフォーマンスは大きな問題にはなりません。

ベストアンサー1

first~stepGNU sedを使用すると、2行目から始まる他のすべての行が変更されるようにフォーマットで行アドレスを指定できます2~2

$ sed '2~2 s/(255)/(1)/' file
myName_tx_1 VARCHAR(255)
myName_in_1 VARCHAR(1)
myName_tx_2 VARCHAR(255)
myName_in_2 VARCHAR(1)
myName_tx_3 VARCHAR(255)
myName_in_3 VARCHAR(1)
myAddress_tx_1 VARCHAR(255)
myAddress_in_2 VARCHAR(1)

おすすめ記事