シェルでファイルの文字列を置換したいです。
/*~*/のコメントの文字なので、1行数を変えたくないです。
───────────────────────────
※1文字分の空白を「_」で表示します。
test.txtファイルの「XXXXX」を「aa___」に置換する。
───────────────────────────
【test.txt 置換前】
/**************/
/*_XXXXXYYYYY_*/
/**************/
【シェルの内容 test.sh】
#!/bin/csh
set IN_henkan = `printf "%-5s" $1`
perl -i -p -e 's/XXX/'$IN_henkan'/g' test.txt
【シェルを実行】
test.sh aa
【test.txt置換前 希望する状態】
/**************/
/*_aa___YYYYY_*/
/**************/
【test.txt置換前 実際の状態】
/**************/
/*_aa_YYYYY_*/
/**************/
───────────────────────────
「aa」の後ろに1文字分の空白しか挿入されないです。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
手元のdebianでやってみたら、こうなった:
debian:~$ csh -x test.csh aa
set IN_henkan = `printf "%-5s" $1`
printf %-5s aa
perl -i -p -e s/XXX/aa/g test.txt
debian:~$ cat test.txt
/**************/
/*_aaXXYYYYY_*/
/**************/
debian:~$
クォートの囲み方がよろしくなくて空白が適切に保持されてませんね。
素直にダブルクォートで囲ってシェル変数を展開させてみては。
そこらへんピンとこないのであれば、Tacosanさんがアドバイスされているとおり、perlスクリプトとして書くほうが確実かも。
No.1
- 回答日時:
スクリプトを書くのに csh はちょっと推奨しにくいんだけど....
さておき, これくらいならシェルスクリプトにせずとも Perl のスクリプトで全部書いてしまえばいいのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Excel VBAでAA(BBB) → BBB.AA に置換したい 2 2022/10/30 13:59
- Excel(エクセル) Excelの置換が上手くいかない Microsoft® Excel® 2019 MSO (バージョン 5 2022/08/17 22:26
- Visual Basic(VBA) VBAでエクセルをtxtに変換するとエクセルでカンマを含む文字数字がtxtでは「""」付にならないよ 1 2022/08/27 12:17
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/03 13:18
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Excel VBA 教えてください。 VBA初心者です。 詳しい方がいましたら教えてください。 下記 3 2023/04/25 11:22
- Excel(エクセル) 【VBA】指定フォルダに格納中のテキストファイルをエクセルで処理し結果のエクセルを新規フォルダに保存 1 2022/03/25 14:19
- Visual Basic(VBA) EXCEL VBA 単語置き換え について質問です ブック名 ぶぶぶ シート名 ししし セル V3〜 3 2023/03/08 01:41
- その他(プログラミング・Web制作) VScodeでpythonプログラムの関数を実行したい 2 2022/07/13 19:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
bashでシングルクォート内の変...
-
ubuntuで デイスク/deb/loopと...
-
AWSでSSH接続をしたいのですが...
-
ubuntu(linux)のシャットダウン...
-
ubuntuのシャットダウンが進ま...
-
tarで纏める際に、複数場外した...
-
Linux Ubuntu22.4の起動時エラ...
-
他のLinuxでも動くa.outの作り方
-
shellscript内のコマンドを、su...
-
ホストオンリーアダプタで接続...
-
Linuxのパーティション番号の変...
-
Ubuntuで数字だけのユーザーア...
-
Ubuntu on Xorgのログインについて
-
linuxサーバーのキャッシュをク...
-
ubuntuサーバーを久々に再起動...
-
Kali Linuxで起動できない - Mi...
-
ノートPCでUSBから起動しない
-
ubuntuのサーバー(virtual box)...
-
VirtualBox ゲストOSにPC内蔵HD...
-
UbuntuにROSをインストールしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ubuntu(linux)のシャットダウン...
-
bashでシングルクォート内の変...
-
ubuntuのシャットダウンが進ま...
-
Windowsのパソコンを使って仮想...
-
ubuntuで デイスク/deb/loopと...
-
AWSでSSH接続をしたいのですが...
-
Ubuntu on Xorgのログインについて
-
LinuxのノートパソコンでDVDコ...
-
linuxサーバーのキャッシュをク...
-
Postfixでドコモメールに送信す...
-
Windowsのローカルディレクトリ...
-
tarで纏める際に、複数場外した...
-
Linux のシェルスクリプトの強...
-
Linux Mint 日本語入力できなく...
-
ホストオンリーアダプタで接続...
-
ubuntuのサーバー(virtual box)...
-
VirtualBox ゲストOSにPC内蔵HD...
-
shellscript内のコマンドを、su...
-
Linux Ubuntu22.4の起動時エラ...
-
Ubuntu でinvalid filenameとな...
おすすめ情報