【Bash】テキストデータ(CSV)の行削除にはsedコマンドがかなり使えます。【Linux】

スポンサーリンク




行削除のコマンドとその条件の付け方みたいなのを知ったので共有メモ。

いつも「a composer」(@a_composer_info)をお読みいただきありがとうございます。

banba(@banba929)です。

sedコマンドは置換処理を行ってくれるコマンドという認識でしたが、行を削除する際にも使えるようです。

CSVデータを編集する際に1行ずつ条件に合う行があるか探し、行数をカウント。

条件似合う行が存在した場合、その行が何行目かを保持、検索終了後削除という処理を入れる時に行を指定しての削除がめちゃめちゃ使えて感動しました。

何言ってるかよくわかんないんで(多分もっと簡単なロジックで同じようなことができる人はいるんだろうなあ。)さっさとコマンドの話をしようと思います。

sedでは行の削除ができる

何行目かを指定して削除

sedコマンドを使用すると何行目かを指定して行削除を行うことができます。

例えば、このようなテキスト(CSV)データがあったとして、2行目を削除したい場合は

sed ‘2d’ 削除したいテキスト

としてやると削除されたテキストデータが表示されます。

普通に数字を使っているので”(シングルクォーテーション)でくくっていますが、変数とか使いたい場合は””(ダブルクォーテーション)を使うと変数も使えます。

また、1〜2行目など、まとめて消したい場合は

sed ‘1.2d’ 削除したいテキスト

とすると1〜2行目が削除されます。

ある文字列を含む行の削除

また、指定した文字列が含まれている行を削除することも可能です。

テキストデータから、”345″が含まれている行を削除したい場合は

sed /345/d 削除したいテキスト

これで”345″が含まれている行が削除されました。

こんな感じでテキストデータの行削除を簡単に行うことができます。

オプションもつけず、リダイレクトもしていないため画面に表示されているだけですが、

オプションとして「-i」をつけると上書き保存、リダイレクト「>」して新しいテキストに出力などすると新規保存が可能です。

まとめ

知っておくと結構役立つのかなーと思います。(常識なのかもですが。)

「sedは置換ができるコマンド」としか思っていなかったので、軽く衝撃を受けました。

たぶん、他にもこういうのがちょくちょくあるんでしょうね。勉強しなきゃ…

また何か使えそうなのがあればご紹介させていただきますー…

スポンサーリンク