문서:
Data inserted into table. Total count 13
No error occurred
Data inserted into table. Total count 45
No error occurred
Data inserted into table. Total count 14
No error occurred
Data inserted into table. Total count 90
No error occurred
예상 출력 파일:
Data inserted into table. Total count 13
Data inserted into table. Total count 45
Data inserted into table. Total count 14
Data inserted into table. Total count 90
나는 출력이 다음과 같기를 원합니다. 다른 모든 행은 삭제되지만 행 사이에는 간격이 없습니다.
답변1
행을 하나씩 삭제하여 이 문제를 해결하면 오류가 발생하기 쉽습니다(예를 들어 프로세스가 때때로 하나가 아닌 두 개의 행을 생성하는 경우). 어쩌면 정크를 필터링하는 것이 더 나을 수도 있습니다.
grep -v "No error occurred" file
이는 더 많은 정크 패턴을 추가하고 결과를 향상시킬 수 있는 필터 역할을 합니다.
답변2
그리고 sed
:
sed -e n\;d <file
POSIX 사용 awk
:
awk 'FNR%2' <file
나이가 많은 경우 awk
(예 oawk
: ) 다음이 필요합니다.
oawk 'NR%2 == 1' <file
그리고 ex
:
$ ex file <<\EX
:g/$/+d
:wq!
EX
파일이 그 자리에서 편집됩니다.
g
전역 명령 표시/$/
모든 라인과 일치+d
다음 줄 삭제wq!
모든 변경 사항 저장
이 방법은 방법과 동일하며 sed
현재 행의 1행부터 시작하여 다음 행을 모두 삭제합니다.
그리고 perl
:
perl -ne 'print if $. % 2' <file
그리고 raku
:
raku -ne '.say if $*IN.ins % 2' <file
raku -ne '.say if ++$ % 2' <file
편집하다
라쿠 IO::Handle.ins
가 삭제된 날짜이번에 제출하세요.
답변3
이 질문에 따르면 GNU는 다음과 같습니다 sed
.
sed '0~2d' file
다른 모든 행은 삭제되지만 콘텐츠별로 필터링된 행을 제공하고 싶습니다.
sed '/Data/! d' file
아니면 같은 결과로
sed '/No error/d' file
답변4
또 다른 대답은 vi/vim을 사용할 수 있다는 것입니다!
qdjddq
그런 다음 파일에 500줄이 있으면(예를 들어) 다음을 입력합니다.
250@일
그런 다음 유형을 작성하고 종료하십시오.
:엑스
또는 문제가 발생하여 저장하고 싶지 않은 경우:
:큐!
설명하다:
q #Start Recording
d #Put the recording into register 'd'
j #Move the cursor down
dd #Delete the line
q #Stop recording
250 #Number of repeats
@d #Playback the recording in register 'd'.