- ベストアンサー
シェルからファイルの内容を変更したい
シェルを使用して複数のファイル(*.txt)中の文字列をパラメータで入力した文字列に変更したいです。その時に文字列の長さを指定して、足りないところにスペースを入れたいです。 変更前の文字列「XXXXXXXXXXXXXXXXXXX」Xが20 変更後の文字列「123 」123とスペースが17
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
a="123" b=`printf "%-20.20s" $a` for i in *.txt sed "s/XXXXXXXXXXXXXXXXXXX/$b/" $i > .temp cp .temp $i done rm .temp シェルスクリプトにするんだったら、入力部分をどうするかとか、エラー処理を追加とか。
その他の回答 (1)
- notnot
- ベストアンサー率47% (4901/10362)
回答No.2
教えてもらったのと違うことをしたら違う結果が出ますよ。 cshは過去の遺物だし、そもそもスクリプトを書くためのシェルじゃないので、使うのをやめましょう。 /bin/shで、#1の方の書いたとおり実行すればいいです。
補足
ありがとうございます。 forがよく分からず、とりあえず「aaa.txt」のみ 試してみました。 ------------------------------------------------------- #!/bin/csh set a = "123" set b = `printf "%-20.20s" $a` sed "s/XXXXXXXXXXXXXXXXXXXX/$b/" aaa.txt > xxx cp xxx aaa.txt rm xxx ------------------------------------------------------- 変更前の文字列「XXXXXXXXXXXXXXXXXXX」Xが20 変更後の文字列「123 」123とスペースが1 結果としてスペース17がスペース1になってしまいました。