2016-11-03 9 views
0

で知られている区切り文字の間の特定の位置に文字列を置き換える私はこのフォーマットシェル

ID;Name;Surname;Country 

に格納されたデータを含むファイルを持っていると私は見つけると、データの特定の部分を置き換えるためにできるようにする必要があります';'を使ってIDとデータの位置を知るだけです。デリミタとして。

"ID" [ファイル] -n

のgrepの結果の種類など|カット ";" -f [位置]

しかし、ユーザー指定の文字列に置き換えの代わりに、私はsedを使用する必要がありますが、私が見つけたものは何も働いていない数える

を表示します。

編集:ユーザーは、変更する項目を選択してIDを入力するメニューから、置換文字列を入力し、保存されたデータの構造を知るように求められます(ID /名前/姓/ Country)の文字列は、テキストファイルに応じて置き換えられます。 awkを持つ

答えて

2

echo 'ID;Data1;Data2;Data3' | awk -v id="ID" -v col=3 -v repl="foo" -F';' 'BEGIN{OFS=";";} $1==id {$col=repl;}1' 

出力:

 
ID;Data1;foo;Data3 
+0

おかげで、私はちょうどそれが永続的にファイルに全体をリダイレクトする必要があるか、きれいな方法はありますか? – user2989371

+0

出力をファイルにリダイレクトすることをお勧めします: 'awk ...> new_file' – Cyrus