人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

perlの-pオプションでsedモードで使っています。
正規表現の置換で後方参照を使った時に、数字が続くと異なる文字に変換されて困っています。

以下のようなテキストファイルを
123456789
abcdefghi

以下のコマンドで処理すると
perl -pe 's/(123)/\1456/' sed.txt

出力結果が以下のようになります。
e6456789
abcdefghi

123の部分が後方参照と合わさって、e6と変換されます。

欲しい結果は以下です。
456456789
abcdefghi

どうすれば欲しい結果になるでしょうか。

●質問者: フジカケ
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:Perl SED txt オプション コマンド
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● syounan
●27ポイント

http://google.com/

URLはダミーです。

当方のlinux環境で検証してみましが、やはり

perl -pe 's/(123)/\1456/' sed.txt

だと、fjkktkysさんの仰るような結果になりました。

ちなみに、

perl -pe 's/123/456/' sed.txt

でやると、fjkktkysさんの想定されている結果が出るようですので、

お試しになっては如何でしょうか?

◎質問者からの返答

すみません説明不足でしたね。

要は、後方参照の後に数字を使いたいということです。

例があまりよくなくて申し訳ないです。

perl -pe 's/^(\w+)/\1456/' sed.txt

とかやりたいということです。


2 ● syounan
●27ポイント

後方参照の後に数字を追加して表示させたいのであれば、

後方参照の後の数字をASCIIコードで表記してみるのは如何でしょうか?

perl -pe 's/(123)/\1\x34\x35\x36/' sed.txt

\x34\x35\x36はそれぞれ数字の4?6に該当します。

アスキーコードについては↓をご参照ください。

http://chaichan.web.infoseek.co.jp/src/moji.htm

◎質問者からの返答

アスキーコードとかその辺が影響してる予感はしたのですが、ちょいとこの方法だと覚えれないですね。


3 ● b-wind
●100ポイント ベストアンサー

正規表現 [Perl講座 -Smart]

perl -pe 's/(123)/${1}456/'

こんな感じで。

◎質問者からの返答

ありがとうございます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ