정규식은 해당 줄에 있는 다른 단어와 함께 해당 줄로 이동하여 특정 줄의 특정 단어를 편집할 수 있습니다.

정규식은 해당 줄에 있는 다른 단어와 함께 해당 줄로 이동하여 특정 줄의 특정 단어를 편집할 수 있습니다.

다음 파일을 고려하십시오.

Name    Id    department
some    13    IT
hey     12    IT

내가 정말로 하고 싶은 일은 사용자의 이름을 읽고 특정 ID나 부서를 편집하는 것입니다. 이 작업을 수행하려고 하는데 hey 줄에서만 바꿀 수 있는 sed올바른 정규식을 찾을 수 없습니다 .IT

나는 정규식 세계에 비교적 새로운 사람이고 몇 가지 기본 사항 외에는 아는 바가 많지 않습니다.

답변1

sed에서 정규식을 명령 접두사로 사용하면 해당 정규식과 일치하는 줄만 편집됩니다.

sed -r '/^hey\s/s/(\s)IT$/\1whatever/'

답변2

패턴으로 특정 행을 찾고 sedfoo를 bar로 바꾸려면 다음을 수행하십시오.

sed '/pattern/s/foo/bar/'

귀하의 경우 이름이 첫 번째 열인 것 같으므로 ^스키마에 "행 시작" 태그를 추가할 수도 있습니다.

답변3

업무용으로 사용하기 awk보다는 사용해야 합니다 .sed

파일이 탭으로 구분된 경우:

 awk -F$'\t' '$1=="hey"{$3="HR"}{OFS=FS;print}' file

공백으로 구분된 경우:

awk '$1=="hey"{$3="HR"}1' file | column -t

column -t좋은 출력을 위해서는 선택 사항입니다.

관련 정보