--------------
특정 패턴(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}/
파일의 시작 부분( )부터 0
14개의 대시로 시작하는 첫 번째 줄까지 일치합니다. 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