"테스트 파일"이라는 파일이 있습니다. 다음 두 줄만 있습니다(첫 번째 줄에는 # 기호가 있고 두 번째 줄에는 내용은 동일하지만 해시가 없습니다).
#contents of line
contents of line
sed 명령을 사용하여 두 번째 줄의 내용을 업데이트/교체하고 싶습니다. 나는 다음과 같은 간단한 구문을 알고 있습니다.
sed -i 's/.*contents of line.*/updated contents/' test-file
그러나 위의 명령은 이 두 줄을 대체하므로 첫 번째 줄을 앞의 # 기호로 업데이트하고 싶지 않습니다.
답변1
다음과 같은 방법으로 편집할 수 있습니다.
sed -e '/^#/!s/.*/UPDATED_CONTENTS/' input-file.txt
또는
sed -e '/^#/!c\
UPDATED_CONTENTS' input-file.txt
이는 다음과 같이 이해될 수 있습니다. 로 시작하지 않는 줄의 경우 #
전체 줄을 지정된 내용으로 변경합니다.
octothorpe 앞에 가능한 공백이 염려된다면 /^[[:blank:]]*#/
나머지는 변경하지 않고 정규식을 조정하세요.
답변2
노력하다
sed 's/^[^#]*contents of line.*/updated contents/' test-file
또는 행 앵커로 시작 ^
하고 행이 로 시작하는 것을 알고 싶다면 content ...
다음을 수행할 수 있습니다.
sed 's/^contents of line.*/updated contents/' test-file
업데이트하려는 행을 알고 있는 경우 해당 주소 행 번호를 직접 변경할 수 있습니다.
sed '2s/.*/updated content/' test-file
-i
결과가 만족스러우면 추가하세요.