必要があってテキストの各行の先頭と末尾に文字を追加したので、そのときの手順をまとめる。Linuxでこれをやるにはsedコマンドを使う。sedは
文字列を条件式に従って変換するコマンド
。
使い方は、オプションeに続けて条件式を記述する。置換する場合(追記含む)は、条件式の先頭にsを指定。末尾にgを指定すると、条件にマッチしたものすべてを置換する。書式は、sなどのコマンドや置換前、置換後の文字などを区切り記号で区切って記述する。例では区切り記号としてよく「/」が使われるが、他の記号を使うこともできる。
条件式には正規表現が使える。正規表現で先頭は「^」、末尾は「$」。sample.txtというテキストファイルの各行の先頭に「ABC」を追加するには以下のコマンド。このコマンドでは、「^」が置換する文字(置換対象の文字はないので追加になる)を表し、「ABC」が置換後の文字を表す。
今回やりたいことは以下のことなので、これをもとに条件式を求める。
①各行の先頭と末尾に文字を追加
②各行先頭の空白を削除
③空白行を削除
①は以下のコマンドで可能。
先頭の複数の空白は正規表現で「^\s*」なので、②を行うコマンドは以下のようになる。
空白行は正規表現で「^$」、そしてsedで削除するコマンドはdなので、③のコマンドは以下のようになる。
結局、4つの条件式が必要になるが、いちいち4回コマンドを実行するのは面倒なので、1回で済むようにする。sedではeオプションを使って条件式を連結できる。
使い方は、オプションeに続けて条件式を記述する。置換する場合(追記含む)は、条件式の先頭にsを指定。末尾にgを指定すると、条件にマッチしたものすべてを置換する。書式は、sなどのコマンドや置換前、置換後の文字などを区切り記号で区切って記述する。例では区切り記号としてよく「/」が使われるが、他の記号を使うこともできる。
条件式には正規表現が使える。正規表現で先頭は「^」、末尾は「$」。sample.txtというテキストファイルの各行の先頭に「ABC」を追加するには以下のコマンド。このコマンドでは、「^」が置換する文字(置換対象の文字はないので追加になる)を表し、「ABC」が置換後の文字を表す。
$ sed -e "s/^/ABC/g" sample.txt結果は標準出力に表示されるので、ファイルに保存するにはリダイレクトを使用する。
今回やりたいことは以下のことなので、これをもとに条件式を求める。
①各行の先頭と末尾に文字を追加
②各行先頭の空白を削除
③空白行を削除
①は以下のコマンドで可能。
$ sed -e "s/^/ABC/g" sample.txt (sample.txtの各行の先頭に「ABC」を追加) $ sed -e "s/$/ABC/g" sample.txt (sample.txtの各行の末尾に「ABC」を追加)
先頭の複数の空白は正規表現で「^\s*」なので、②を行うコマンドは以下のようになる。
$ sed -e "s/^\s*//g" sample.txt
空白行は正規表現で「^$」、そしてsedで削除するコマンドはdなので、③のコマンドは以下のようになる。
$ sed -e "/^$/d" sample.txt
結局、4つの条件式が必要になるが、いちいち4回コマンドを実行するのは面倒なので、1回で済むようにする。sedではeオプションを使って条件式を連結できる。
$ sed -e "s/^\s*//g" -e "/^$/d" -e "s/^/ABC/g" -e "s/$/ABC/g" sample.txt
0 件のコメント:
コメントを投稿