![목록을 사용하여 파일에서 찾기/바꾸는 가장 쉬운 방법은 무엇입니까?](https://linux55.com/image/27137/%EB%AA%A9%EB%A1%9D%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%B0%BE%EA%B8%B0%2F%EB%B0%94%EA%BE%B8%EB%8A%94%20%EA%B0%80%EC%9E%A5%20%EC%89%AC%EC%9A%B4%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)
foo.txt 파일과 해당 파일에서 찾고 싶은 정규 표현식이 있습니다. 정규식이 발견될 때마다 다른 파일인 bar.txt에서 한 줄을 가져와 foo.txt에서 찾은 정규식 일치 항목으로 바꾸고 싶습니다. 기본적으로 찾기/바꾸기를 원하지만 바꿀 때마다 bar.txt의 다음 줄에서 다음 대체 텍스트가 나오길 원합니다.
이를 수행할 수 있는 간단한 쉘 마법이 있습니까?
답변1
내가 올바르게 이해한다면 아마도 다음과 같을 것이다.
awk '{getline repl < "second-file"; sub(/regexp/, repl); print}' < first-file
또는 regexp
각 줄이 여러 번 발생하거나 전혀 발생하지 않는 경우:
perl -pe 's/regexp/chomp($r=<STDIN>);$r/ge' first-file < second-file
답변2
perl -pe '
BEGIN {
open IN, "<replacements" or die $!;
}
s/pattern/
$tmp = <IN>;
chomp $tmp;
$tmp
/xe;
' filename