![다른 파일을 기반으로 한 파일의 특정 문자열을 편집합니다.](https://linux55.com/image/203881/%EB%8B%A4%EB%A5%B8%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EA%B8%B0%EB%B0%98%EC%9C%BC%EB%A1%9C%20%ED%95%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%98%20%ED%8A%B9%EC%A0%95%20%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%84%20%ED%8E%B8%EC%A7%91%ED%95%A9%EB%8B%88%EB%8B%A4..png)
안녕하세요. users.txt라는 파일이 있습니다. 예를 들어, 이 파일에는 사용자 목록이 있습니다.
user1
user2
user3
이제 "owner=user"라는 특정 문자열이 있는 "search"라는 또 다른 파일이 있습니다.
owner = user1
random text
random text
owner = user15
random text
random text
owner = user2
따라서 사용자 파일을 기반으로 모든 사용자를 찾고 이러한 사용자의 이름을 다음으로 바꿀 수 있습니까?[이메일 보호됨]? 예를 들어
owner = [email protected]
random text
random text
owner = user15
random text
random text
owner = [email protected]
ack 명령과 cat 명령을 사용하여 일부 작업을 수행했지만 프로그래밍이 처음이라 올바른 출력을 얻을 수 없습니다. 내 생각은 다음과 같지만 실제로 필요한 작업을 수행하지 않습니다. 어떤 도움이라도 대단히 감사하겠습니다.
cat users | xargs -i sed 's/{}/moo/' searches
답변1
awk를 시도해보세요:
awk 'NR == FNR {SRCH[$1]; next} $NF in SRCH {$NF = $NF "@domain.com"} 1' users searches
owner = [email protected]
random text
random text
owner = user15
random text
random text
owner = [email protected]
users
사용자가 파일에서 해당 내용을 찾으면 부록을 추가합니다.
답변2
사용 awk
:
awk '
NR==FNR{users[$0]=$0"@domain.com"}
NR>FNR && $1 == "owner" && $3 in users { $3=users[$3]; }
NR>FNR
' users searches
파일을 직접 편집하려면 추가하세요.> searches.tmp && mv searches.tmp searches