sedでダブルクォーテーション・シングルクォーテーションで囲まれた文字を置換する
Pocket

設定ファイルやスクリプトのソースなどでは、ダブルクォーテーションやシングルクォーテーションで値が囲まれている事が多い。
クォーテーションで囲まれている値のみを置換する場合は、以下のようにsedを実行すると良いだろう。

●ダブルクォーテーションの場合

sed 's/"\([^"]*\)"/"置換後の値"/' 対象のファイルPATH
[root@test-centos7 work]# cat /work/test.txt
testline1="test1"
testline2="test2"

testline3='test3'
testline4='test4'
[root@test-centos7 work]# sed 's/"\([^"]*\)"/"replace"/' /work/test.txt
testline1="replace"
testline2="replace"

testline3='test3'
testline4='test4'
Sponsored Links

●シングルクォーテーションの場合

sed 's/"\([^"]*\)"/"置換後の値"/' 対象のファイルPATH
[root@test-centos7 work]# cat /work/test.txt
testline1="test1"
testline2="test2"

testline3='test3'
testline4='test4'
[root@test-centos7 work]# sed "s/'\([^']*\)'/'replace'/" /work/test.txt
testline1="test1"
testline2="test2"

testline3='replace'
testline4='replace'

20150604_000000

 

特定の行のみを置換対象とするのであれば、先頭にそれらの条件を付与すると良いだろう。
行指定条件の付与については、こちらを参照してもらいたい。

sed '/検索文字列/s/"\([^"]*\)"/"置換後の文字列"/' 置換するファイルPATH
[root@test-centos7 work]# cat /work/test.txt
testline1="test1"
testline2="test2"

testline3='test3'
testline4='test4'
[root@test-centos7 work]# sed '/testline2/s/"\([^"]*\)"/"replace"/' /work/test.txt
testline1="test1"
testline2="replace"

testline3='test3'
testline4='test4'

20150604_000001

 

2016年04月13日 追記

似たような内容なのでここに追記する。鉤括弧([])で囲まれている文字列の置換の場合はこれ。

sed -e 's/\[\([^]]*\)\]/\[置換後の文字列\]/g' file.txt

 

2016年07月15日 追記

その他、sedでダブルクォーテーション・シングルクォーテーションを扱った処理については、こちらに記述している。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

This article has 1 comments

  1. Pingback: sedコマンドで覚えておきたい使い方12個(+1個) | 俺的備忘録 〜なんかいろいろ〜

Leave a Comment

メールアドレスが公開されることはありません。