No.2ベストアンサー
- 回答日時:
こんな感じでしょうか?
cd /web
for name in `ls *.txt`;do sed -i s/abc/xyz/g $name;done
.txt拡張子のファイル全て 「abc」を「xyz」に置換え
No.5
- 回答日時:
何度もすみません。
誤字です。
置き返されます→置き換えされます
ちなみに、perlの方はforループは不要です。
No.4の例で*.txtで複数ファイル指定になります。
cd /webの後に実行してみてください。
ご返信有難うございます。
早速、試してみました。
なるほど、確かに置換ができました!助かりました。
ただし、以下の2つ想定外のことが起きました。
1つ目は、/web以下のサブディレクトリにあるファイルが置換できないことです。
2つ目は、shift_jisのHTMLファイルの場合、日本語を置き換えすると、文字化けしてしまうことです。
もし、対処法があればの話しですが、おわかりであれば、ご指南いただけると勉強になります。
No.4
- 回答日時:
Linuxにも色々有りますので、残念ですが、sedがin-placeの使えない版のようです。
こちらは、Perlが使える前提ですが、こういうのもあります。
(例1)
perl -p -i -e 's/abc/xyz/' *.txt
(例2)
perl -p -i.bak -e 's/abc/xyz/' *.txt
動作はどちらも元ファイル(*.txt)が置き返されますが、例2は元ファイルに~.bakと
ファイル名の後ろに拡張子を追加して保存します。
こちらが使えれば簡単なんですが。
No.3
- 回答日時:
補足ですが、
sedで-iを指定するとインプレース、つまり直接置換えを行います。
そうでなければ、元ファイルは更新せず、置き換えた結果を別途
出力するという指定になります。
早速のご返信ありがとうございました。
コマンドを直接ご記載頂いたので、慣れていない私にとって大変助かります。
さて、教えて頂いたとおりに、打ち込んでみましたが、エラーが発生して、処理ができていないようでした。
何か誤っているのでしょうか。。
[root@hoge test]# for name in `ls *.txt`;do sed -i s/abc/xyz/g $name;done
sed: invalid option -- i
Usage: sed [OPTION]... {script-only-if-no-other-script} [input-file]...
-n, --quiet, --silent
suppress automatic printing of pattern space
-e script, --expression=script
add the script to the commands to be executed
-f script-file, --file=script-file
add the contents of script-file to the commands to be executed
--help display this help and exit
-V, --version output version information and exit
If no -e, --expression, -f, or --file option is given, then the first
non-option argument is taken as the sed script to interpret. All
remaining arguments are names of input files; if no input files are
specified, then the standard input is read.
・・・・・・・・・・・・
No.1
- 回答日時:
これは下記のようにsedコマンドを使えば可能です。
sed s/abc/xyz/g < in-file > out-file
sedコマンドは1ファイルにつき1回ずつ実行します。
また、入力ファイル名(in-file)と出力するファイル名(out-file)は
同じにしてはいけません。従って、テンポラリファイルをいったん
生成してから、mvコマンドでファイル名を修正する必要があります。
これをふまえて、forループを使って全ファイルをsedコマンドに
かけるようにします。
この回答への補足
上記の件、私の理解不足のようでした。
sedコマンドをforループで一気に適用するのですね。
forループというのを使用したことがなかったのですが、Yeti21さんの回答を見て、なんとなくイメージできました。
失礼しました。
早速のご返信有り難うございました。
ただ、sedコマンドのように、1ファイルづつの処理では、今回のケースでは対処できないと思いました。
一括で、対象となるファイルを検索して、置換する方法をお聞きしたかったのです。
また、機会がありましたら、宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(開発・運用・管理) 【至急】.htaccessによるディレクトリ単位でのリダイレクト 2 2023/08/10 13:46
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Windows 10 バッチファイルの記述法とルールについてアドバイスをお願いいたします。 1 2022/04/13 10:50
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をfind.shとして、以下の条件をすべて満たすファ 1 2023/02/03 03:50
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
Linuxで*をつかってファイル移...
-
DOSでテキストファイルの中のあ...
-
コマンドプロンプトでUSBメモリ...
-
フォルダ内のファイル名を取得する
-
【Linux】findコマンドの表示順
-
【DOSコマンド】for文の中で変...
-
DOSバッチにて外のファイルの指...
-
grepやsed,shプログラムによる...
-
*.txtファイルの最終行だけ参照...
-
OSX用のファイル結合ソフト
-
Unix-sedコマンドによる置換に...
-
renameコマンドでファイル名か...
-
UNIXで、ディレクトリを比較し...
-
○行目から□行目だけを表示する...
-
^M削除方法、教えてください。
-
コマンドプロンプト net user...
-
スラッシュ"/"を削除したい
-
このエラー内容について教えて...
-
Dirコマンドでフォルダ内ファイ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
シェルスクリプトでエラーが出ます
-
【Linux】findコマンドの表示順
-
【DOSコマンド】for文の中で変...
-
バッチで特定文字が含まれる先...
-
スラッシュ"/"を削除したい
-
Linuxで*をつかってファイル移...
-
CentOS/リダイレクションに改行...
-
renameコマンドでファイル名か...
-
UNIXで、ディレクトリを比較し...
-
○行目から□行目だけを表示する...
-
ファイルの先頭に文字を追加す...
-
unixのdiffコマンドの動作について
-
コマンドプロンプトでUSBメモリ...
-
ファイルリストを印刷したい。
-
コマンドプロンプト net user...
-
標準出力とリダイレクトを同時...
-
ショートカットのリンク先(フ...
-
scriptコマンドの文字化けについて
-
windows7でmingwのgrepで漢字の...
-
cshでfindした一覧をタイムスタ...
おすすめ情報