내가 뭐하는 거지
sed "s/test1/replacetext" testfile.txt
/q를 사용하여 "test1"을 찾고 쉘 스크립트를 실행하려는 시도가 실패했습니다. 어떻게 해야 하나요? 고마워요 네이트
답변1
sed
GNU 및 여러 줄 입력 사용 :
sed -n '/pattern/{h;s//replacement/;};p;${g;//!q1;}' file
- 다음을 포함하는 줄에
pattern
:- 홀딩 버퍼에 라인 추가
- 교체 수행
- 각 줄을 인쇄
$
마지막 줄( )에 도달하면:- 홀딩 버퍼 가져오기
- 패턴 공간이 포함되어 있지 않으면
pattern
종료 코드로 종료합니다.1
- 빈 정규식은
//
마지막으로 사용된 정규식 패턴을 사용합니다.
선택하다 awk
- :
awk 'END{exit !repl} /pattern/{repl++; sub(/pattern/,"replacement")} 1' file
- 줄에 가 포함되어 있으면
pattern
변수가repl
증가하고 대체됩니다. - 마지막으로
logical not
변수로 종료합니다(repl
0인 경우 상태로 종료1
).
대안 - grep
미리 입력하세요. 예:
if grep -q 'pattern' file; then
# input contains pattern - do sed replacement
sed 's/pattern/replacement/' file
else
: input does not contain pattern - execute shell script
fi