テキストファイルの中で
zeta0
となっている部分を
\zeta_0^p
へ一括して変換したいのですが、
tex でコンパイルできるソースに変換するために
ネット上の情報を参考にして
$ sed -e "s/zeta0/\zeta_0^p/" 01.tex > 02.tex
$ sed -e "s/zeta0/\\\zeta_0^p/" 01.tex > 02.tex
$ sed -e "s/\zeta0\/\\\zeta_0^p\/" 01.tex > 02.tex
$ sed -e "s/zeta0/\\\zeta_0^p&/g" 01.tex > 02.tex
などとやってみましたが、どれもうまくいきません。
どう書けばうまくいきますか?
教えて下さい。
よろしくお願いします。
No.2ベストアンサー
- 回答日時:
sed -e "s/zeta0/\\\zeta_0^p/" 01.tex > 02.tex
一応、これでも動くはずですが。
どのように「うまくいきません」なのでしょうか?
引数の作り方ですが
まず、sedに送りたい文字列を考えます
s/zeta0/\\zeta_0^p/
\は、sedで解釈されて、メタ文字の切り替えや引用等に使われます。
そのため、\という文字を扱うには\\とする必要があります。
次に、シェルで、上記文字列を表現する方法を考えます。
ダブルクオートは、\によるエスケープシーケンスを解釈して置換します。
そのため、\という文字を扱うには\\とする必要があります。
"s/zeta0/\\\\zeta_0^p/"
※ 3つでも動いたのは、 ダブルクオートの場合は\zというシーケンスが無く、変換されずに残ったためです。
ですが、この文字列の中では、変数展開などを使っていません。
ならば、シングルクオートを使えば、特殊文字の展開やエスケープを考えずに済みます
's/zeta0/\\zeta_0^p/'
set -x と入力したあと各コマンドを実行すると、上記のシェルによる置き換え後のコマンドラインが表示されるので、自分の期待る文字列になっているか確認できます。
シェルの種類によっては、上記の展開が違う場合もあります。
昨日は
zeta0
aaazeta0aa
aazeta0aa
zeta0
という内容の4行のファイルを質問の中で書いたコマンド群で変換すると
zeta_0^p
aaazeta_0^paa
aazeta_0^paa
zeta_0^p
となっていたのです。
今
sed -e "s/zeta0/\\\zeta_0^p/" 01.tex > 02.tex
のコマンドを打つと
こちらが期待したように変換してくれました。
昨日はどこかミスをしていたのかもしれません。
上記の内容は完全には理解できませんでしたが、
おかげさまで勉強になりました。
http://okwave.jp/qa/q3340542.html
を参照して変数展開もできるようになりました。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) texのchapterが改行される 2 2023/01/22 18:05
- その他(コンピューター・テクノロジー) Texについての質問です。 sinωtはどうしたら数式でだせますか? \sin\omegaの後がわか 2 2022/06/30 19:32
- その他(コンピューター・テクノロジー) Texについてです。 jpgファイルを貼り付けても表示されないのですが、どうしたら表示できますか? 1 2022/06/30 23:42
- 大学・短大 いまTOEIC415点で、2か月で600を超えたいのですが、TEX加藤の銀フレ・金フレ・文法出る10 2 2023/08/21 02:56
- UNIX・Linux sedでの正規化 2 2022/05/10 11:39
- その他(プログラミング・Web制作) Texに詳しい方よろしくお願いいたします 2 2023/01/16 22:25
- その他(健康・美容・ファッション) 眼鏡市場 NEO-TEX(ネオテックス)NTX-05 の類似商品 1 2023/02/27 19:13
- 数学 数学科で使われているパ底について 4 2023/01/15 20:35
- その他(プログラミング・Web制作) sedの正規表現 1 2022/10/08 18:57
- 数学 数学の研究で使うパソコンを教えてください 14 2023/04/09 01:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Cシェル内でBシェルの様な関数...
-
.cshrc ファイルについて
-
『存在するかどうか分からない...
-
Thunderbirdで既読にしても、シ...
-
シェル 会話形式でエンターキ...
-
BシェルとCシェル
-
export と set は違うの?
-
Solaris9でdateコマンドの結果...
-
シェルにて日付計算して値を取...
-
シェルスクリプトに関する問題...
-
lsコマンド部分一致方法
-
Cシェルでのファイルからの入...
-
ターミナルが全く入力できない
-
makefile内の$$$$の意味
-
シェルスクリプトで #!/bin/sh ...
-
(PC初心者)シェルスクリプト...
-
バックスラッシュの意味がわか...
-
シェルやviのショートカットの意味
-
msys(cygwin)で、シェルスクリ...
-
シェルのコマンドの仕組み
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
export と set は違うの?
-
Cシェル内でBシェルの様な関数...
-
シェル 会話形式でエンターキ...
-
シェルスクリプトで #!/bin/sh ...
-
.cshrc ファイルについて
-
『存在するかどうか分からない...
-
ubuntuの端末の左にカレントデ...
-
ターミナルが全く入力できない
-
バックスラッシュの意味がわか...
-
Linuxのファイル禁止文字
-
シェルスクリプトに関する問題...
-
mac os x10.6.4のターミナルでp...
-
シェルスクリプトのbashとperl...
-
違いについて
-
tcshなのにスクリプト構文中のs...
-
シェル(ksh)で変数にある文字列...
-
posixでshellを起動したとき`da...
-
シェルの変数をMySQLに送る方法...
-
Solaris9でdateコマンドの結果...
-
Cシェルでのファイルからの入...
おすすめ情報