※当サイトはリンクに広告ページが含まれている場合があります
みんな大好きbashの話、といっても、現在のmacOSのデフォルトは、bashからzshに変更されているので、以下はzshを用いる場合の解説になります。
2行目の文字列を削除したい場合
まず、ファイル「test.txt」の中身は、以下の5行の文字列とします。
line1
line2
line3
line4
line5
この2行目「line2」という文字列を削除したい場合、bashでは以下のコマンド一発です。
$ sed -e "2d" test.txt
結果は以下のようになります。
line1
line3
line4
line5
複数行の文字列を削除したい場合
次に、1行でなく、複数行の文字列を削除したい場合です。2行目から4行目を削除したい場合は「2,4d」とします。
sed -e "2,4d" test.txt
結果は以下のようになります。
line1
line5
実務で役立つファイル操作 sed
当然、1つのファイルであれば、コピペで十分です。わざわざ、こんなコマンドを覚える必要はないのでは・・・と思うでしょう。私も学生時代はそう思っていました。
しかし、人事労務だけでなく総務業務でも、定型書類・定型データを従業員分、数十枚、数百枚扱うことなんて日常茶飯事です。
そうすると、書式は同じ、でも従業員の氏名など、書類の箇所によっては違う書類・データがあったりします。
そんなときこそ、bashの出番です。100のファイルがあっても1秒もかからず終了します。
以下は、実際に実務で利用したスクリプトです。といっても、ファイル名をここで公開するわけにはいかないので、変更しています。
#!/bin/sh
for i in {1..100};do
cat member$i.md
sed -e "19,25d" member$i.md > new/member$i.md
done
このスクリプトで実行したのは以下の作業ですが、たった6行でできます。
- 100人分の従業員ファイル(ここではmember1からmember100)をループ処理で読み込み
- 19-25行目の文章を削除
- 「new」フォルダに、新しいmember1からmember100のファイルを作成
100人分の従業員ファイルに対する処理ですが、実際の処理は1秒もかからずに完了します。
今回は削除の方法でしたが、文字列を挿入する方法も当然あります。以下の記事をご参考ください。
- 毎年のように改正される労働法令への対応に頭を悩ませている
- 総務や経理などの他の業務を兼務しているので、人事労務業務だけに時間を割けない
といった悩みを抱える企業の経営者・人事労務担当者向けに、公開型のブログでは書けない、本音を交えた人事労務に関する情報・ノウハウ、時期的なトピックに関するメールマガジンを「無料」で配信しています。
過去の配信分は公開しません。
情報が必要な方は、いますぐ以下のフォームから購読の登録をしてください。購読して不要と思ったら簡単に解除できますのでご安心ください。