에코를 패턴으로 적용

에코를 패턴으로 적용

가르쳐다음을 사용하는 사이에 콘텐츠를 어떻게 삭제합니까 <>?

 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.

관련 정보