나는 이것을 입력 파일로 가지고 있습니다
파일 1
Red + Yellow = Orange; Yellow + Blue = Green; Blue + Red = Violet
파일 2
Red;1
Yellow;2
Blue;3
저는 이것을 유닉스 환경에서 하고 있습니다.
산출
파일 3
1 + 2 = Orange; 2 + 3 = Green; 3 + 1 = Violet
답변1
awk 'NR == FNR { # First file
split($0,a,/;/)
#print "change " a[1] "to " a[2]
change[a[1]]=a[2]
}
NR != FNR {
for (i=1;i<NF;i++) {
if ($i in change) {
$i=change[$i]
}
}
print
}' file2 file1
awk 관용구 NR != FNR을 사용하여 이것이 첫 번째 파일인지 두 번째 파일인지 확인하세요. 첫 번째 파일인 경우 줄을 분할 ;
하고 변경 사항 배열에 지도를 저장합니다. 두 번째인 경우 입력 필드를 반복하고 일치하는 항목이 있으면 올바른 변경 사항으로 바꿉니다. 마지막으로 결과를 인쇄합니다.
답변2
#!/bin/bash
IFS=";"
while read NAME VALUE
do
sed -i "s/${NAME}/${VALUE}/g" file1
done < file2