あなたの習慣について教えてください!!

perlの初心者です。
cshスクリプト内に、perlの1ライナースクリプトを入れて、文字の置き換えをしたいのですが、
記述の仕方が解りません教えてください。
【詳細】
テキストファイル内は、下記のようなデータが入っており、perlの1ライナーで文字列が
5フィールドのみMIYAKE_ILFをMIYAKE_ILFU  MIYAKE_HFをMIYAKE_HFU MIYAKE_LFをMIYAKE_LFUへ置き換えて、それ以外はそのまま出力したいのです。
130325.142626.281 #p 130325.142627 MIYAKE_ILF tanaka
130331.012203.576 #p 130331.012210 MIYAKE_HF tanaka
130428.132805.796 #p 130428.132809 MIYAKE_LF tanaka
130419.163411.369 #p 130419.163411 MIYAKE_HF tanaka  #f 13 04 19 16 34 10.565 34.08739 139.52408 1.377 0.2 0.018 0.020 0.042

A 回答 (3件)

perl -pe 's/MIYAKE_(ILF|HF|LF)\b/$&U/ if /^(\S+\s+){5}$/' inputfile



正規表現の最後に \b (単語境界) を追加すれば、末尾が U になっている文字列は置き換えないようになります。
    • good
    • 0
この回答へのお礼

ご教授ありがとうございました、大変感激しました。
やっぱり、perlって魔法のようですね。
とっても、感謝、感謝です。
どのように勉強したら、こんなにサクッと作れるようになるのかな?

お礼日時:2013/05/02 21:10

perl -pe 's/MIYAKE_(ILF|HF|LF)/$&U/ if /^(\S+\s+){5}$/' inputfile



質問の意味をもう1つ理解していないかも? 追記がありましたら補足してください。

この回答への補足

さっそくの御教授有難うございました。
説明が不足しておりました、下記のように修正前から
070712.141823.385 #p 070712.141840 MIYAKE_ILFU tanaka このように記述されている行もあります。お教えいただいたperlを実行すると
070712.141823.385 #p 070712.141840 MIYAKE_ILFUU tanaka となってしまいます。
MIYAKE_ILFU MIYAKE_HFU MIYAKE_LFUは対処にしない方法がありましたら、再度御教授ください。

補足日時:2013/05/02 18:19
    • good
    • 0

とりあえず one-liner じゃないものを書いてみてください.



それを 1行で書いて -e オプションに与えればいい.

と書いてはおくけど本当に csh だったりすると「ど~しよ~もない」ことがありえるので注意.

この回答への補足

御教授ありがとうございます。
perlってとても高機能なのは実感しておりますが、敷居が高くて、なかなか慣れません。
御教授の意味が解りません、具体的にスクリプトでご教示頂けると有難いのですが。

補足日時:2013/05/02 18:24
    • good
    • 0

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


おすすめ情報