如何使用命令或脚本在文本文件中放置分隔符

时间:2013-03-20 18:40:13

标签: linux

我有一个文本文件,我想在某些字符(修复)之后放置分隔符。 喜欢在1-3字符之后添加分隔符(任何类似),而不是4而不是5

文件看起来像这样(原创)

6-17 .....

我想要这样的文件

22503003673916972040504700538884720121008175657358045042677480191000000919046068826

请建议任何可以执行此操作的命令或脚本?

提前致谢

3 个答案:

答案 0 :(得分:2)

我使用的是python:

#!/usr/bin/env python

a='22503003673916972040504700538884720121008175657358045042677480191000000919046068826'

# python strings are 0-indexed, just
# add the indexes below
delim=[2, 3, 4, 16]
A=""

for n, i in enumerate(a):
    if n in delim:
        A+='%s,' % i
    else:
        A+=i

print A

输出:

$ ./delim.py 
225,0,3,003673916972,040504700538884720121008175657358045042677480191000000919046068826

使用列表理解也可以写得非常简洁:

>>> "".join([i+',' if n in delim else i for n, i in enumerate(a)])
'225,0,3,003673916972,040504700538884720121008175657358045042677480191000000919046068826'

答案 1 :(得分:0)

使用sed:

sed "s/^.\{4\}/&,/;s/.\{6\}/&,/;s/.\{8\}/&,/;s/.\{20\}/&,/;s/.\{37\}/&,/;s/.\{52\}/&,/;s/.\{69\}/&,/;s/.\{72\}/&,/;s/.\{91\}/&,/" filename

答案 2 :(得分:0)

您可以在bash脚本中使用head和tail命令。在firt,请参阅终端man headman tail中的mannual,您将详细了解。 我想表明我的逻辑,我不知道这是不是好主意。 假设您的文件名是 original.txt 现在阅读前3个字符

var1=$(head -c 3 original.txt)

前三个字符存储在变量var1中,即225存储该值在另一个文件中通过放置分隔符来说 final.txt 。现在这次读前四个字符如下

var2=$(head -c 4 original.txt)

前四个字符存储在变量var2中,即2250在临时文件中回显echo var2>temp.txt

但这次你必须使用下面的尾巴

var3=$(tail -c 1 temp.txt)

这里最后一个字符存储在变量var3中,即0,使用分隔符将此var3附加到文件final.txt中。这次final.txt必须如下255,0,

下一个字符可以像上面那样完成。我们也可以使用循环来做到这一点。