如何使用 bash 拆分一长串文本



我有一个包含我的日志信息的文件,如下所示:

Sat May 20 00:34:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers Sat May 20 00:35:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers Sat May 20 00:36:04 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers

我正在尝试将此日志数据拆分为几行,因此如下所示:

Sat May 20 00:34:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 
Sat May 20 00:35:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers 
Sat May 20 00:36:04 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers

有什么想法吗?

使用sed

$ sed 's/containers */containersn/g' file
Sat May 20 00:34:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers
Sat May 20 00:35:03 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers
Sat May 20 00:36:04 EST 2017 -- lane3a 4 0 -- lane3b 5 4 9 Total active sales: 4 Total bidders in sales: -- caster3a 0 -- caster3b 0 0 Total A/V 0 Estimated containers

或:

$ sed 's/(containers) */1n/g' file

您可以将整个文件读入 Bash 变量,并使用参数扩展将containers后的空格替换为换行符:

text=$(< infile)
echo "${text//containers /containers$'n'}"

尝试:

perl -i.bkp -pe 's/containers/containersn/' file.log

这假设单词containers应该是每行末尾的内容

最新更新