Bash 将一行文本文件转换为多行的脚本

Bash Script To Convert Text File of One Line to Multiple Lines

我目前正在尝试创建一个 bash 脚本,它将一行的文本文档更改为多行。

示例: TextFile: Header~someHeaderInfo|Object~someObjectInfo|SubObject~someSubObjectInfo|Object~someObjectInfo|SubObject~someSubObjectInfo|...|Tail~someInfo

同样,以上只是一行。

这应该通过 bash 脚本调用并转换为:

Header~someHeaderInfo
Object~someObjectInfo|SubObject~someSubObjectInfo
Object~someObjectInfo|SubObject~someSubObjectInfo
...
Tail~someInfo

在实际用例中,每个对象都有超过 20 个子对象,每个子对象本身可能有更多子对象。

我该如何处理这种分离?

如果文本文件包含: Header~someHeaderInfo|Object~someObjectInfo|SubObject~someSubObjectInfo|Object~someObjectInfo|SubObject~someSubObjectInfo|...|Tail~someInfo

以下 bash 命令:

sed "s/|/\n/g" textfile

将产生以下输出:

Header~someHeaderInfo
Object~someObjectInfo
SubObject~someSubObjectInfo
Object~someObjectInfo
SubObject~someSubObjectInfo
...
Tail~someInfo

但是OP希望子对象在同一行(见评论),所以我建议:

sed "s/|\([^S]\)/\n/g" textfile

这将产生以下输出:

Header~someHeaderInfo
Object~someObjectInfo|SubObject~someSubObjectInfo
Object~someObjectInfo|SubObject~someSubObjectInfo
...
Tail~someInfo