너가르쳐다음을 사용하는 사이에 콘텐츠를 어떻게 삭제합니까 <>
?
echo 'i< 1| | 1> -1.0000000000000' | sed 's/<[^-]*//'
i-1.000000000 as
이것은 내가 요청한 내용을 정확히 제공 하지만 내 텍스트 파일에는 다음과 같은 줄이 많이 있습니다.
< 1| | 1> 1.7320508075689
< 1| | 1> 1.0000000000000
< 1| | 1> 1.0000000000000
I< 1| | 1> -1.0000000000000
< 1| | 1> 1.0000000000000
<..>
그래서 이 명령을 패턴으로 적용하여 파일의 모든 내용을 삭제하고 싶습니다 .
답변1
sed 's/<[^-]*//'
<
에서 까지의 모든 항목을 효과적으로 제거합니다 (포함하지 않음) -
.
실제로 <
다음 항목부터 시작하는 모든 항목을 삭제하려면 >
다음을 수행하세요.
sed 's/<[^>]*>//'
아마도 이 문제는 스스로 알아낼 것이므로 여기서 정규식 구문을 이해하지 못하는 것 같습니다. [^>]
를 제외한 모든 문자와 일치합니다 >
.
sed
마지막으로 파일 경로를 인수로 제공하여 파일에서 직접 명령을 실행할 수 있습니다 . 따라서 이름이 지정된 파일에 대해 위 명령을 실행하려면 foo.txt
다음을 수행합니다.
sed 's/<[^>]*>//' foo.txt
그리고 명령이 실제로 파일을 변경하도록 하려면 다음을 사용하십시오.
sed -i.bak 's/<[^>]*>//' foo.txt
원본 파일의 이름은 foo.txt.bak
.