파일을 읽고 표준에 따라 원하는 출력을 인쇄하십시오.

파일을 읽고 표준에 따라 원하는 출력을 인쇄하십시오.

내 입력 파일은 다음과 같습니다.

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

관련 정보