NO_ID가 포함된 데이터 파일의 모든 행을 찾은 다음 "확인됨" 문자열을 "확인 보류 중"으로 바꿔야 합니다.
나는 이것을 시도했습니다 :
sed '/NO_ID/, s/confirmed/to be confirmed/' stats.txt
이것은 작동하지 않는 것 같습니다.
답변1
쉼표를 제거하세요. 초기 정규식은 s
후속 명령의 "주소" 역할을 합니다(여기에 표시된 주소와 명령 사이의 공백은 선택 사항입니다).
sed '/NO_ID/ s/confirmed/to be confirmed/' stats.txt
confirmed
명령의 정규식 과 일치하는 단어로 단어를 바꾸면 더 단축될 수 있습니다.s
sed '/NO_ID/ s/confirmed/to be &/' stats.txt
to be confirmed
포함된 행이 수정되지 않았 는지 확인해야 하는 경우 :
sed '/NO_ID/ { /to be confirmed/!s/confirmed/to be &/; }' stats.txt
또는,
sed -e '/to be confirmed/b' -e '/NO_ID/ s/confirmed/to be &/' stats.txt
여기서 첫 번째 명령은 먼저 포함된 행을 감지 NO_ID
하고 해당 행에 to be confirmed
. 두 번째 명령은 포함된 줄을 감지하고 건너뜁니다 to be confirmed
( b
명령어는 스크립트 끝으로 이동하여 추가 수정 없이 해당 줄이 인쇄되도록 합니다). 포함되지 않은 줄은 to be confirmed
원래 명령과 동일하게 수정됩니다.
답변2
이와 같이:
sed '/NO_ID/ s/confirmed/to be confirmed/' stats.txt
# ^
여기에는 쉼표가 없습니다