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
我目前正在尝试创建一个 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