Linux에서 패턴(------------) 앞의 텍스트를 제거하는 방법

Linux에서 패턴(------------) 앞의 텍스트를 제거하는 방법

--------------특정 패턴(14개의 대시) 이후에 데이터를 가져오는 파일이 있습니다 . 14개의 대시 이후에 텍스트를 얻을 수 있는 파일을 생성하고 싶습니다.

파일 이름은 portals.csv이고 파일의 텍스트는 다음과 같습니다.

xyz 
anch 
skjbsejkbkjsbj 
183y83yy3e 
29292.2982 282823 
CSV File begin 
-------------- 
ip,time,release

답변1

단 한 줄이 아니라 점선 뒤의 모든 내용을 원한다고 가정합니다.

$ sed -E '0,/^-{14}/d' portals.csv 
ip,time,release
some,more,data

0,/-{14}/파일의 시작 부분( )부터 014개의 대시로 시작하는 첫 번째 줄까지 일치합니다. d일치하는 줄을 삭제합니다. 확장된 정규식을 사용하도록 -E지시합니다 . 대안은 입니다 . (이것은 또한 14개 이상의 대시 또는 그 뒤에 오는 쓰레기가 있는 줄과 일치합니다.)sed/^-\{14\}/

0범위의 시작으로 GNU 확장을 사용하십시오 . 표준 sed의 경우 다음과 같습니다.

< portals.csv sed -nE  -e '/^-{14}/,$p' | sed 1d

( sed -E '1,/^-{14}/d'점선이 파일의 첫 번째 줄이면 실패합니다.)

답변2

perl -0pe 's/^.*-{14}//g' portals.csv  > portals_clean.csv 

또는 전체 라인을 사용하는 경우 grep을 사용할 수 있습니다.

grep -A 1 -P "-{14}" portals.csv  | tail -n 1 > portals_clean.csv 

답변3

sed를 사용하세요:

  sed -E -n  '/^-{14}/{n;p;}' file > newfile

AWK 사용:

  awk '/^--------------/{p=1;next}p' file > newfile

관련 정보