TSV Find and Replace
A find-and-replace in a text editor sees a wall of characters. It does not know that 0 in the status column means something different from the 0 inside a phone number, and it will happily change both. This one works on parsed cells, so you can point it at a column and leave the rest of the file alone — and it lists every cell it is about to change before you download anything.
How to use
- Paste or drop the file, then type what to find. Nothing changes until there is something in the find box.
- Click a column chip under the toolbar to limit the replacement to that column — the chips come from your own header row, so there is nothing to type or spell wrong. Click again to unlimit.
- Read the change list under the panes. Every changed cell is there with its old and its new value, and where it is: row 412, status.
- Download when the list looks right.
The three ways to match
- Plain text — a literal substring, escaped before it is used, so searching for
1.5finds1.5and not1x5, and searching for(old)finds those brackets. Every occurrence in a cell is replaced, not just the first. - Whole cell only — the cell has to equal the search text exactly. This is the one for status codes and flags: replacing the whole cell
0withnoleaves1024alone, which a substring replace would not. - Regular expression — JavaScript syntax, applied per cell, with
$1…$9and$&in the replacement. Find^(\d{4})-(\d{2})-(\d{2})$, replace with$3/$2/$1, and a column of ISO dates becomes British ones. Tick whole cell as well and the pattern is anchored, so it has to cover the entire cell to count. An invalid pattern is reported rather than matching nothing in silence.
Scoping to columns
Leave the columns box empty and every cell is considered. Fill it — by clicking the chips, or by typing city, country — and only those columns are touched. Column numbers work too, which is what you need when the file has no header row.
The header row itself is never rewritten unless you ask for it. That separation matters: renaming a column is a schema change, and doing it by accident while cleaning values is how a downstream import starts failing at 3am.
Why not just use a text editor
- A tab is data here. Replacing across raw text can insert or delete a tab and silently shift every column after it on that row. This works on parsed cells and re-emits the file, so the shape cannot change by accident — and if your replacement contains a tab or a newline, the status line says so, because that would add columns or rows.
- Column scope is the whole point. "Replace
N/Awith nothing, but only in the numeric columns" is two clicks here. - The counts and the list tell you if you were right. A replacement that hits 4,000 cells when you expected 40 is a mistake worth seeing before you download the file, not after you have loaded it.
Notes and limits
- Real TSV has no quoting. Cells are split on tabs and joined back with tabs. If you need a tab inside a value, escape it first with escape tabs.
- The change list shows the first 50 cells and then says how many more there are. The file output is always complete.
- One find at a time. For a list of substitutions, run it once per pair — or use lookup if you have the pairs as a table.
Privacy
100% client-side. The file is parsed and rewritten in your browser; nothing is uploaded. See the privacy policy.
Related
Regex extract pulls a value out into a new column instead of replacing it · Replace a column swaps a whole column's values · Clean text for invisible characters and mojibake · Lookup to map values through a table · Filter rows to keep only what matched.