私の入力ファイルは次のとおりです。
H1
O1
C1
H2
H3
O2
C2
Br1
次の出力を含む出力ファイルが必要です。
H1 = 1
O1 = 8
C1 = 6
H2 = 1
H3 = 1
O2 = 8
C2 = 6
Br1 = 35
だから水素が存在するとき、私は1(電子1個と同じ)に等しいことを望むので、炭素が6に等しいとき、酸素が8に等しいとき、臭素が35に等しいとき。
答え1
使用awk
:
awk -F'[0-9]' '
BEGIN{
x["H"]=1;
x["O"]=8;
x["C"]=6;
x["Br"]=35;
}
{ print $0" = "x[$1]; }
' input_file > output_file
出力:
H1 = 1
O1 = 8
C1 = 6
H2 = 1
H3 = 1
O2 = 8
C2 = 6
Br1 = 35
答え2
input
指定した値を含むファイルを使用してください。
for tuple in 'H1,1' 'O1,8' 'C1,6' 'H2,1' 'H3,1' 'O2,6' 'C2,8' 'Br1,35'; do
search=$(echo "$tuple" | cut -d',' -f1)
replace=$(echo "$tuple" | cut -d',' -f2)
sed -i "s/$search/$search = $replace/g" input
done
答え3
sedコマンドで完了すると効果もとても良いです
注文する
sed -i -e "/H/s/.*/& = 1/" -e "/O/s/.*/& = 8/" -e "/C/s/.*/& = 6/" -e "/Br/s/.*/& = 35/" filename
出力
H1 = 1
O1 = 8
C1 = 6
H2 = 1
H3 = 1
O2 = 8
C2 = 6
Br1 = 35