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