アプリ版:「スタンプのみでお礼する」機能のリリースについて

$ cat ./text
aaa
bbb

$ perl -i -e "s|^.|ok|" ./text
これを実行しても、./text に変化がありません。
どこが間違っているのでしょうか?

$ cat ./text
okaa
bbb
となることを期待しています。

A 回答 (4件)

スイッチ0でレコードセパレータをNull文字にしてみては?



例) -----------------------------------------------------------------
perl -p0e 's|^.|ok|' ./text
---------------------------------------------------------------------

参考URL:http://www.ibm.com/developerworks/jp/linux/libra …
    • good
    • 0
この回答へのお礼

ありがとうございます!
大成功です!!
行番号を使わないので応用が利きます!
参考URLまでご提示いただいて本当にありがとうございました!!
後からプログラミングPerl(第3版はP.578)の-0見ましたが、
さっぱりわからず、root139様の例の方が圧倒的に理解しやすいです!!
本当にありがとうございました。

お礼日時:2009/04/01 22:06

$. に「現在の行番号」が入ります. したがって


-pe "s/^./ok/ if $. == 1"
が素直.
    • good
    • 0
この回答へのお礼

ありがとうございます!
成功しました!!
しかし、mtaka2様と秒差だったようで...(^^;;

お礼日時:2009/04/01 21:56

> perl -i -pe "s|^.|ok| if ($.==1); close ARGV if eof;" test



でどうでしょうか。

close 以下は、複数のファイルを指定した時に、行番号をリセットさせるためです。1ファイルしか指定しない場合は不要。
    • good
    • 0
この回答へのお礼

ありがとうございます!
成功しました!!

お礼日時:2009/04/01 21:54

入出力を全くしていない, に 1票.


-e オプションは「実行内容を指定する」だけです. つまり, 今の場合は
$_ の最初の文字を「ok」に置き換える
だけ. つまり, text の内容を読み込んでいないし何かを出力するということもありません.
    • good
    • 0
この回答へのお礼

ありがとうございます!
何も作用してないのですね...

皆様
この場合、どうすれば良いのでしょうか?

perl -pe 's|^.|ok|' ./text
とすると、
okaa
okbb
となってしまいます。
while(<>) 前に1行化させることができるのでしょうか?

お礼日時:2009/04/01 13:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!