sed의 w 명령을 사용하여 파일에 쓰는 방법은 무엇입니까?

sed의 w 명령을 사용하여 파일에 쓰는 방법은 무엇입니까?

아래는 내 테스트입니다. 이 오류를 어떻게 해결할 수 있나요?

ubuntu@u1804:~# sed --version
sed (GNU sed) 4.5
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Jay Fenlason, Tom Lord, Ken Pizzini,
and Paolo Bonzini.
GNU sed home page: <https://www.gnu.org/software/sed/>.
General help using GNU software: <https://www.gnu.org/gethelp/>.
E-mail bug reports to: <[email protected]>.
ubuntu@u1804:~#
ubuntu@u1804:~# cat test
11
aa
bb
cc
edde
xx
aa
bb
cc
edde
22
ubuntu@u1804:~# sed -r '/^[a-z]/{s/^.*$/(&)/; w result}' test
sed: -e expression #1, char 0: unmatched `{'
ubuntu@u1804:~#
ubuntu@u1804:~# sed -r '/^[a-z]/{s/^.*$/(&)/; p}' test
11
(aa)
(aa)
(bb)
(bb)
(cc)
(cc)
(edde)
(edde)
(xx)
(xx)
(aa)
(aa)
(bb)
(bb)
(cc)
(cc)
(edde)
(edde)
22
ubuntu@u1804:~#

답변1

작업 디렉토리를 확인하세요. result}create라는 파일이 있을 수 있습니다.

sed -r -e '/^[a-z]/{s/^.*$/(&)/; w result' -e '}' test

다양한 해결 방법이 있으며 그 중 하나는 -e옵션을 사용하여 명령을 구분하는 것입니다. 사용 하면 w그 뒤의 모든 문자가 파일 이름으로 사용되므로 {닫는 쌍이 없기 때문에 오류가 발생합니다.

추가 자료:GNU sed 매뉴얼: 개행이 필요한 명령

관련 정보