
텍스트 파일이 있는데 test1.txt
개와 날짜가 포함된 줄을 삭제해야 한다고 가정해 보겠습니다."29-APR-2015"
이를 수행하려면 다음 명령을 사용하십시오. 그러나 행이 삭제되지는 않습니다.
/DOG/d
내가 언급한 것은 단지 include 를 제거하는 것과 같습니다 DOG
.
명령 파일(sedcommands)
/DOG,29-APR-2015/d
테스트1.txt
DOG 29-APR-2015
DOG 29-APR-2015
DOG 30-APR-2015
CAT 29-APR-2015
CAT 29-APR-2015
주문하다
sed -f sedcommands test1.txt > test2.txt
답변1
GNU sed 사용:
sed '/DOG/{/29-APR-2015/d}' test1
이 방법을 사용하면 모든 주문이 가능합니다. 즉. DOG
이 날짜 이전 또는 이후일 수 있습니다.
답변2
POSIX적으로:
sed -e '/DOG/!b' -e '/29-APR-2015/!b' -e d file
b
태그를 제공하지 않으시면 끝까지 목장을 해주시기 바랍니다.
또는:
sed '/DOG/{/29-APR-2015/d
}' file
최신 구현은 POSIX에서 허용하지만 필수는 아닌 확장인 양식 sed
도 지원합니다 .{command;}
sed '/DOG/{/29-APR-2015/d;}' file
답변3
/DOG,29-APR-2015/d
DOG
와 사이에 쉼표가 없기 때문에 작동하지 않습니다 9-APR-2015
. 이 시도;
$ sed -e '/DOG[[:space:]]*29-APR-2015/d' test1.txt
DOG 30-APR-2015
CAT 29-APR-2015
CAT 29-APR-2015
[[:space:]]*
DOG
및 사이에는 0개 이상의 공백 문자가 허용됩니다 9-APR-2015
. 문자 클래스는 [:space:]
일반 공백과 탭을 허용하며 유니코드 글꼴과 함께 사용해도 안전합니다.
답변4
명령 파일에는 다음이 포함되어야 합니다.
/DOG *29-APR-2015/d
즉, 그 DOG
뒤에는 0개 이상의 공백이 오고 그 뒤에는 지정된 날짜가 옵니다.