bash
스크립트 내에서 sed
파일 이름이 bash 변수에 저장된 파일에 쓰는 데 어떻게 사용할 수 있습니까? 한 파일을 제자리에서 편집하고 정규식과 일치하는 줄을 다른 파일로 가져와 첫 번째 파일에서 삭제하기 때문에 출력 리디렉션이 수행되지 않습니다.
다음과 같은 것 :
sed -i '/^my regex here$/{;w file2;d;}' file1
... 그러나 file1
및 file2
둘 다 실제로 파일 이름 을 보유 하는 변수 입니다 . (예 : .)file2=$(mktemp)
그래서 내가 정말로 원하는 것은 파일 이름에 대한 변수 확장이지만 나머지 sed
명령에 대한 확장은 없으며 전체를 sed
명령에 전달되는 단일 인수로 남겨 둡니다 .
어떤 이유로 든 다음은 작동하지 않습니다.
sed -i '/my regex here/{;w '"$file2"';d;}' $file1
"unmatched {"라고 표시되고 이유를 알 수 없습니다.
내가 할 수있는 방법이 있나요?
단일 sed
표현식을 사용하고 있기 때문에 뒤에 오는 모든 것 w
(포함 }
)은 wfile 이름으로 해석됩니다 .
인수
wfile
는 편집 명령을 종료합니다.
두 번째 명령을 추가하면 다음 }
과 같은 것을 알 수 있습니다 .
sed -e '/my regex here/{w '"$file2"';d;}' -e '}' $file1
그런 다음 일치하는 행 은 확장 되는 항목 이 어디에 my regex here
있는 파일에 저장 됩니다. 올바른 구문은 여러 표현식이있는 별도의 명령을 사용하는 것입니다.whatever;d;}
whatever
$file1
sed -e '/my regex here/{w '"$file1" -e 'd' -e '}' $file2
또는 한 줄에 하나의 명령 :
sed '/my regex here/{
w '"$file1"'
d
}
' $file2
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다