![Cshell에서 두 개의 매개변수 파일을 읽고 바꾸는 방법은 무엇입니까?](https://linux55.com/image/166734/Cshell%EC%97%90%EC%84%9C%20%EB%91%90%20%EA%B0%9C%EC%9D%98%20%EB%A7%A4%EA%B0%9C%EB%B3%80%EC%88%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9D%BD%EA%B3%A0%20%EB%B0%94%EA%BE%B8%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
텍스트 파일의 단어를 자동으로 바꾸는 스크립트를 만들려고 합니다.
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