カンマ区切りのファイル内の特定の項目のみ変換

カンマ区切りのファイル内の特定の項目のみ変換

いくつかのビット分析信号を含むネットリストファイルがあります。以下のように信号名を変更したいと思います。

それはまるで

\abc[0],\abc[1].....
\xyz[0],\xyz[2]....

欲しい

abc_0,abc_1....
xyz_1,xyz_1....

特定の信号セットに対してのみこれを実行したいと思います。それ以外の場合は削除して\ください。][_

特定の信号リストに対してのみこれを行うにはどうすればよいですか?誰でもこの問題を解決するのに役立ちますか?

ベストアンサー1

質問のデータを使用して:

$ sed 's/\\\([[:alnum:]]*\)\[\([[:digit:]]*\)\]/\1_\2/g' file
abc_0,abc_1.....
xyz_0,xyz_2....

このsedコマンドは、 が英数字で構成された文字列であり、 が数値文字列であるテキスト\word[digits]と一致します(これらの文字列は空白であり、少なくとも1文字が必要になるように変更されます)。一致する文字列はで置き換えられます。データ内のすべての行の項目をすべて置き換えます。worddigits*\{1,\}word_digits

おすすめ記事