sed 一致部分をそのまま使う【Ubuntu】

こんにちは、minoruです。

Ubuntuのシェルスクリプトなどでsedコマンドを使う時に、一致した部分をそのまま置換後の文字列にも含めたい時には以下の通り。

echo "2/13 あいうえお" | sed -e "s#\(^[0-9]/\)#0\1#g"

実行結果は以下の通り。

※「^」は行頭を表す記号

02/13 あいうえお

例えば複数行に日付を含むデータや文字列があるファイルの場合、日付が2/13と02/13のように0があるパターンと無いパターンが混在していたら、02/13に統一したいのが人情。
指定時

\(hoge\)

使用時

\1

これがポイント。

ファイルを上書きで置換

sed -i -e "s#\(^[0-9]/\)#0\1#g" test.html

-iがファイルを上書きするオプションコマンドで、上記の場合同じ階層にあるtest.htmlというファイルの日付の混在を調整してくれる事になる。

LinuxやUbuntuをこれから試してみたい!と言う人や、今までWindowsで使っていたPCをWindowsは残したままLinuxやUbuntuを活用してみたい人は以下の本がおすすめ!
https://amzn.to/3Vl1oNx

LinuxやUbuntuを使おうとして、初心者の人が最初に「?」となりやすいのがコマンドでしょう。使い方がわかればこれほど簡単で便利なものはありませんが、最初は戸惑うのが普通です。そんな初心者に向けてマンガで超わかりやすいコマンドについて学べるのはシス管系女子みんとちゃんの本!
https://amzn.to/3FMTx5v

シェアする

  • このエントリーをはてなブックマークに追加

フォローする