テキストファイルの単語を自動的に置き換えるスクリプトを作成しようとしています。
In a.v,
BIRA_0 0
BIRA_1 400
BIRA_2 800
BIRA_3 C00
...
in b.v,
BIRA_0[25:0]
BIRA_0[95:26]
BIRA_0[125:96]
BIRA_0[255:125]
BIRA_1[5:0]
BIRA_1[25:6]
...
Result,
0[25:0]
0[95:26]
0[125:96]
0[255:125]
400[5:0]
400[25:6]
...
もちろん使えます。
$sed "s/BIRA_0/0/" b.v > result
しかし、問題は、ファイルにa.v
このような代替ケースがたくさん含まれているため、Cshellスクリプトを介して自動的に生成したいということです。
答え1
正規表現の特殊文字が含まれていない限りa.v
、どのシェルを使用してもこのようなことができます。
awk '{printf "s/^%s/%s/\n", $1, $2}' a.v | sed -f - b.v
またはawkのみを使用してください。
awk 'NR==FNR {a[$1]=$2; next} {print a[$1] "[" $2}' a.v FS="[" b.v