文書:
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
行を1つずつ削除してこの問題を解決すると、エラーが発生しやすくなります(たとえば、プロセスが1つではなく2つの行を作成する場合など)。多分ジャンクをフィルタリングする方が良いかもしれません。
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@日
その後、型を作成して終了します。
:X
または問題が発生して保存したくない場合:
:キュー!
説明する:
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'.