读取文件并根据标准打印所需的输出

读取文件并根据标准打印所需的输出

我的输入文件如下所示:

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

相关内容