Linuxとシェルスクリプト

こないだから、長いブランクをあけてlinuxでコマンド叩いたりちょっとしたシェルスクリプトを書いたりとするようになってきた。

なんかもう得意じゃないので、他の人にお願いしたいところなのだが、
周りはWindowsしか触りたくないと豪語するおっさんと、linux環境初心者のほとんど新卒みたいな子たちと、あとは言葉が通じにくい外国人の方たち。

うーん、自分でやった方が早いな…

なので、ちょこちょこと自分でやっている。

今回、ちょっとしたファイルの中身を一部置換したりなんだりする必要があり、
超久々にsedやらawkコマンドを使うはめに…

まずはsedの超基本的なおさらいからメモっとこう。

例えばこんな感じのファイルがあって、中身のhappyだけHAPPYに変換したいとする。

$ cat a.txt
Hi, I’m happy.
Are you happy?
Wow!

そこでsedコマンドを以下のようにしよう。
そんなときは以下のコマンドで簡単に。

$ sed -e “s/happy/HAPPY/g” a.txt
Hi, I’m HAPPY.
Are you HAPPY?
Wow!

で、このままだと標準出力に出るだけなので、ファイルに保存したい。
んでこんな感じ。

$ sed -e “s/happy/HAPPY/g” a.txt > b.txt
$ cat b.txt
Hi, I’m HAPPY.
Are you HAPPY?
Wow!

でも、別ファイルにじゃなくて、最初のa.txtを修正したいので…と思ったが、やり方が分からず、
一旦b.txtにしてa.txt削除して名前をa.txtにかえて…
みたいにしていたが…なんかもっとスマートにできないのコレ!?

って思ってたら…ちょっと調べたらまさに同じことを書いてくれていた人がいました。
なのでメモっときます。

「-i」を使うだけで良いみたい。
sed -i -e “s/aaa/bbb/g” ファイル名
みたいな感じ。

$ cat a.txt
Hi, I’m happy.
Are you happy?
Wow!

$ sed -i -e “s/happy/HAPPY/g” a.txt

$ cat a.txt
Hi, I’m HAPPY.
Are you HAPPY?
Wow!

こんな感じ。

こんなのとかawkとかそんなこんなを駆使してツール作成完了。
ふー。
今日はもうかえろかな^^

いつものごとく深夜の富士そば行こう??
富士そばうまいよなー。
カツ丼とそばのセットだけで十二分に満たされる!

コメントを残す

サブコンテンツ