# Replace a string in all posts

**URL:** https://meta.discourse.org/t/replace-a-string-in-all-posts/48729
**Category:** Self-Hosting
**Tags:** how-to
**Created:** [17 Agosto 2016, 10:23am UTC](https://meta.discourse.org/t/replace-a-string-in-all-posts/48729 "2016-08-17T10:23:49Z")
**Posts on this page:** 1
**Showing post:** 174

<div class="post-metadata">

### Author: ![sniper756](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sniper756/32/545002_2.png) [@sniper756](https://meta.discourse.org/u/sniper756)
#### Post date: [9 Dicembre 2025, 11:55am UTC](https://meta.discourse.org/t/replace-a-string-in-all-posts/48729/174 "2025-12-09T11:55:29Z")

</div>

Ho usato il seguente comando per sostituire i tag `[HEADING]` che non sono stati convertiti durante la migrazione da xenforo:

```plaintext
sudo -u discourse -H RAILS_ENV=production bundle exec rails runner '
Post.where("raw LIKE ?", "%[HEADING%").find_each(batch_size: 500) do |p|
  orig = p.raw
  cooked = orig.dup
  (1..6).each do |lvl|
    cooked.gsub!(/\[HEADING=#{lvl}\](.*?)\[\/HEADING\]/mi) { "#" * lvl + " " + $1 }
  end
  cooked.gsub!(/\[HEADING\](.*?)\[\/HEADING\]/mi) { "## " + $1 }
  next if cooked == orig
  p.raw = cooked
  p.save!(validate: false) # Innesca il rebake, ma salta la validazione
end
puts "HEADING tags converted & rebaked."
'

```

---

_[View the full topic](https://meta.discourse.org/t/replace-a-string-in-all-posts/48729)._
