• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【perl】特定の条件を元に文字を削除)

【perl】特定の条件を元に文字を削除

このQ&Aのポイント
  • perlを使用してCSVファイル内の特定の条件に基づいて文字を削除する方法について困っています。
  • 具体的には、3番目のフィールドを基準に2番目のフィールドの文字を削除したいです。
  • 例えば、4の場合は2番目のフィールドの末尾から4つの0を削除し、2の場合は2つの0を削除したいです。

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

  • ベストアンサー
  • ybnormal
  • ベストアンサー率50% (220/437)
回答No.2

べたでやるなら、こんな感じでしょうか。 while(<>){ chop; @x = split(/,/,$_); $len = length($x[1]) - $x[2]; $x[1] = substr($x[1], 0, $len); } あとはこんなやりかたも。 while(<>){ chop; @x = split(/,/,$_); for(1..$x[2]){ chop($x[1]); } }

helissio65rog
質問者

お礼

ご回答いただきありがとうございました。 ご教授いただいた内容で無事解決いたしました。 また何かありましたら宜しくお願い致します。

その他の回答 (2)

  • ybnormal
  • ベストアンサー率50% (220/437)
回答No.3

見てわかると思いますが、私のスクリプトは3カラム目に指定された数だけ無条件に削除します。0以外は削除したくないというのであれば、やり方は変わってきます。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

まず, どこで困っているのでしょうか? 「どこまでできているのか」「何に困っているのか」を明確にしてください. あと, 仕様が不明確です. 例えば ・3番目のフィールドが 3 のときに 2番目のフィールドのお尻から 7個が 0 とか ・3番目のフィールドが 6 のときに 2番目のフィールドのお尻から 3個が 0 (当然その前には 0 でないものがある) とかのときにはどうすればいいのですか?

helissio65rog
質問者

お礼

ご回答いただきありがとうございました。 また、説明不足で大変申し訳ございませんでした。 2番の方の回答でなんとか解決致しました。 また何かありましたら宜しくお願い致します。

関連するQ&A

専門家に質問してみよう