검색에 실패하면 sed를 사용하여 쉘 스크립트를 실행하십시오.

검색에 실패하면 sed를 사용하여 쉘 스크립트를 실행하십시오.

내가 뭐하는 거지

sed "s/test1/replacetext" testfile.txt

/q를 사용하여 "test1"을 찾고 쉘 스크립트를 실행하려는 시도가 실패했습니다. 어떻게 해야 하나요? 고마워요 네이트

답변1

sedGNU 및 여러 줄 입력 사용 :

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변수로 종료합니다( repl0인 경우 상태로 종료 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

관련 정보