【发布时间】:2022-01-08 11:43:30
【问题描述】:
我有一个大的制表符分隔文件,由两列组成,第二列由许多子分隔记录组成
| A header | Another header |
|---|---|
| rec1 | field1;field2;field3;field4 |
| rec2 | field1;field2 |
我需要它看起来像
| A header | Another header |
|---|---|
| rec1 | field1 |
| rec1 | field2 |
| rec1 | field3 |
| rec1 | field4 |
| rec2 | field1 |
| rec2 | field2 |
子分隔字段的数量从 1 到 200 多个不等。
我知道我可以通过编写一个程序来做到这一点,但我想做的是构造一个正则表达式,它在开头捕获第一个字段并将所有分号替换为 \r\1 所以我结束了记录编号后跟每行分隔的记录。
如果我尝试像这样的 vi 表达式
^\(.*\t\)\([^;]*\);/\1\2\r\1/g
它只替换第一次出现。有没有一种方法可以根据需要替换所有分号?
【问题讨论】:
-
单次通过是不可能的。
标签: vi