다른 파일을 기반으로 한 파일의 특정 문자열을 편집합니다.

다른 파일을 기반으로 한 파일의 특정 문자열을 편집합니다.

안녕하세요. 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

관련 정보