sed
にコメントしました わからないコマンド:
sed '
## In first line: append second line with a newline character between them.
1N;
## Do the same with third line.
N;
## When found three consecutive blank lines, delete them.
## Here there are two newlines but you have to count one more deleted with last "D" command.
/^\n\n$/d;
## The combo "P+D+N" simulates a FIFO, "P+D" prints and deletes from one side while "N" appends
## a line from the other side.
P;
D
'
1N
を削除 「スタック」には 2 行しか必要なく、2 番目の N
で十分だからです。 、および /^\n\n$/d;
を変更します /^\n$/d;
へ 2 つの連続する空白行をすべて削除します。
テスト:
infile
の内容 :
1
2
3
4
5
6
7
sed
を実行します コマンド:
sed '
N;
/^\n$/d;
P;
D
' infile
1
2
3
4
5
6
7
これは awk
でより簡単になります :
awk -v RS='\n\n\n' 1
これは cat
でより簡単になります :
cat -s
sed '/^$/{N;/^\n$/d;}'
ファイル内の連続する 2 行の空白行のみを削除します。この表現はファイルでのみ使用でき、完全に理解できるのはあなただけです。空白行が来ると、中括弧に入ります。
通常、sed は 1 行を読み取ります。 N
2 行目をパターン スペースに追加します。その行が空の行の場合。両方の行は改行で区切られています。
/^\n$/
このパターンは、その時点で d
のみに一致します 動作します。そうでなければ d
うまくいかない。 d
パターンスペース全体のコンテンツを削除してから、次のサイクルを開始するために使用されます。