• ベストアンサー

シェルからファイルの内容を変更したい

シェルを使用して複数のファイル(*.txt)中の文字列をパラメータで入力した文字列に変更したいです。その時に文字列の長さを指定して、足りないところにスペースを入れたいです。 変更前の文字列「XXXXXXXXXXXXXXXXXXX」Xが20 変更後の文字列「123               」123とスペースが17

質問者が選んだベストアンサー

  • ベストアンサー
  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

a="123" b=`printf "%-20.20s" $a` for i in *.txt sed "s/XXXXXXXXXXXXXXXXXXX/$b/" $i > .temp cp .temp $i done rm .temp シェルスクリプトにするんだったら、入力部分をどうするかとか、エラー処理を追加とか。

irukadayo
質問者

補足

ありがとうございます。 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になってしまいました。

その他の回答 (1)

  • notnot
  • ベストアンサー率47% (4901/10362)
回答No.2

教えてもらったのと違うことをしたら違う結果が出ますよ。 cshは過去の遺物だし、そもそもスクリプトを書くためのシェルじゃないので、使うのをやめましょう。 /bin/shで、#1の方の書いたとおり実行すればいいです。

関連するQ&A