

sedの使い方がよく分からない為、教えてください。
テキストの中で、同じパターンスペースに対して、
別の文字を置換させたいと考えています。
(一つ目のマッチングには、yyy 二つ目には、zzzなど)
sed文ではコマンドブロックの書き方がわからないので、
sedスクリプトを別に用意してファイルを読み込ませた所、
うまくいきました。
sed -f test.sed test.txt
しかし、第二段階として、置換文字列を変数にしたところ、
変数展開ができませんでした。実際には変数展開を考えているので、
困っているところです。
この問題を解決できるようなsed文(sed -e)か、sedスクリプトを
教えて頂きたく宜しくお願いいたします。
下記、テスト材料です。
一つ目のabcを $HOMEに、
二つ目のabcを $SHELLに置き換えたいです。
text.txt (編集元テキスト)
------------------
User
yyyyy
abc
Pass
zzzzz
abc
-------------------
test.sed(SEDスクリプト)
---------------------
/User/{
N
N
s/abc/$HOME/
N
N
N
s/abc/$SHELL/
}
----------------------
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
sed "/User/{;N;N;s/abc/$HOME/;N;N;N;s/abc/$SHELL;}" text.txt
sed の種類によっては、下記のように書かないといけないかもしれません。
sed -e "/User/{" -e N -e N -e "s/abc/$HOME/" -e N -e N -e N -e "s/abc/$SHELL/" -e "}" text.txt
要は、スクリプトファイルの改行のところを ; にするか、-e で個別に分けるかです。
ご回答ありがとうございました。
回答内容を参考にして再びトライしてみたところ、
sedのオプションエラーが出てしまいました・・。
しかし冷静に考えた後、$HOMEが/home/hoge と
展開後に /が含まれていた為に起きていたエラーでしたので、
$を解決後にsedが正常に動作する事を確認しました。
問題が解決した上にコマンドブロックの囲み方が
理解できましたので大変助かりました。
ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepで日付指定してlogを取り出...
-
grepで変数が使えない
-
grepで全角文字の行を抽出
-
awkを用いて、特定の文字を含む...
-
grepで検索文字列が完全一致し...
-
スクリプトのエラー「unexpecte...
-
batである文字列内に特定の文字...
-
ファイル名についている「-」と...
-
Dirコマンドでフォルダ内ファイ...
-
net use /d の強制実行
-
エクセルの表にヘンな枠が・・・
-
ラズパイで『’test.service’をs...
-
Mac de プログラム
-
TOPコマンドで表示するCPU使用...
-
batファイルの強制終了を回避し...
-
コマンドプロンプト「システム...
-
SONYの音楽ソフト「x-アプリ」...
-
VNCで接続したいが、xterm等Can...
-
ACCESSレポートをPDFに出力したい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Linux環境 grepで改行コード(CR...
-
grepでの抽出箇所のみ置換して...
-
grepで全角文字の行を抽出
-
grepで日付指定してlogを取り出...
-
grepで検索文字列が完全一致し...
-
bashでブランク(空白)を検索文...
-
シェルスクリプトの実行結果が...
-
sed で \\ を含む文字列に置換
-
grepでの日本語検索
-
パラメータの1つを複数行で表...
-
sedによる置換 置換ができない。
-
grepで拡張子がxlsxのファイル...
-
特定文字列間の文字列の抽出の...
-
行頭と行末に文字追加
-
zshの文字列置換機能
-
【シェルスクリプト】awkの結果...
-
正規表現の初心者です
-
awk:LinuxとWindows
-
HP-UXのメモリ搭載量を確認する...
-
unixコマンドを教えてください。
おすすめ情報