質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

Q&A

解決済

2回答

902閲覧

sedでタグに囲まれた文字列を同じ文字数で変換する方法わかる人いますか?

toss

総合スコア56

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

0グッド

0クリップ

投稿2019/08/14 17:45

以下のコマンドでpタグに入っている文字を「ダミーテキストがはいります。」に変換することができました。

sed -e 's\<p>.*</p>\<p>ダミーテキストがはいります。</p>\g'

今回やりたいことは、元々入っている文字の数に応じて、「ダミーテキストがはいります。」の文字数が変わるというプログラムです。

例えば、以下のコードがあったとします。

html

1<p>今回やりたいことは、元々入っている文字の数に応じて、「ダミーテキストがはいります。」の文字数が変わるというプログラムです。</p>

このコードを以下のように変換したいです。

html

1<p>ダミーテキストがはいります。ダミーテキストがはいります。ダミーテキストがはいります。ダミーテキストがはいります。ダミーテキ</p>

文字数を変更前に合わせる、上記のようなことは可能なのでしょうか?
もしわかる方がいらっしゃれば教えて頂きたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

sedだけでは、文字列の長さを測ることができないので、現実的ではないです。
やろうとすると、文字数の上限を100とか仮定した上で、100文字の場合、99文字の場合、、、、、、1文字の場合などとsコマンドを100個並べることになります。

投稿2019/08/15 01:37

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2019/08/15 02:17

Rubyで ruby -lpe 'R="ダミーテキストがはいります。";L=R.size gsub(%r|(?<=<p>)(.*?)(?=</p>)|){|x| (R*(x.size/L+1))[0,x.size]}'
toss

2019/08/15 05:20

rubyはわからないのですが、ご丁寧にありがとうございました。 参考にさせていただきます。
otn

2019/08/15 05:41

sed 's:<p>[^<]\{100\}</p>:<p>置き換える100文字</p>:g;t;s:<p>[^<]\{99\}</p>:~~~ こんな感じで。t コマンドの意味はman sedで。
guest

0

sedでは難しいと思います。perlなら比較的簡単です。こんな感じで多分できると思います。

perl -CIO -Mutf8 -pe 'BEGIN{$t="ダミーテキストがはいります。"; $l=length($t)} s#<p>(.*?)</p>#$ll=length($1), $x=($t x ($ll/$l)).substr($t,0, $ll % $l), "<p>$x</p>"#ge;'

投稿2019/08/14 20:33

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問