会社で仕事していていつも
検索してしまうので、まとめ記載しておこう
linuxのテキスト処理で
空白行や改行の連続を削除する方法です。
sedとperlの方法を以下に記載しとく
'/^$/d' で改行のみの行を削除。
レアケースだけど、複数の空白行を1つの改行に置換するには以下でできそう。
1. sed)
検索してしまうので、まとめ記載しておこう
linuxのテキスト処理で
空白行や改行の連続を削除する方法です。
sedとperlの方法を以下に記載しとく
○置換用のテストデータ
% cat -n file
1
2 TEST
3
4 TEST2
5
6
7
8
9 TEST3
10
11
12 TEST4 test5
13
%
%
○空白行の削除
1. sed)
% cat file | sed -e '/^$/d' | cat -n
1 TEST
2 TEST2
3 TEST3
4 TEST4 test5
%
2. perl)
sコマンドで空白行を置換することで削除しちゃう。
sコマンドで空白行を置換することで削除しちゃう。
% cat file | perl -pe 's/^\n//' - | cat -n
1 TEST
2 TEST2
3 TEST3
4 TEST4 test5
%
○複数改行を改行一つに置換
今回やりたかったのは、連続改行の圧縮ですのでレアケースだけど、複数の空白行を1つの改行に置換するには以下でできそう。
1. sed)
sedは1行毎の処理は得意だけど、行を跨ぐと途端に面倒になる。
なんとなく出来ているようだけど、最終の改行が削除されているので本当はNG。
2. perl)
なんとなく出来ているようだけど、最終の改行が削除されているので本当はNG。
% cat file | sed '/^$/{N; /^\n$/D;}' | cat -n
1
2 TEST
3
4 TEST2
5
6 TEST3
7
8 TEST4 test5
%
2. perl)
% cat file | perl -pe 's/^\n/,/g' - | perl -pe 's/,,*/\n/g' | cat -n
1
2 TEST
3
4 TEST2
5
6 TEST3
7
8 TEST4 test5
9
%
○結論
ためしてみたら
Perlの方が簡単だった・・・・
次からはperlを使おう!!
次からはperlを使おう!!
---
以上
ここまで〜
0 件のコメント:
コメントを投稿