我有一个文本文件,我想在某些字符(修复)之后放置分隔符。
喜欢在1-3
字符之后添加分隔符(任何类似),而不是4
而不是5
文件看起来像这样(原创)
6-17 .....
我想要这样的文件
22503003673916972040504700538884720121008175657358045042677480191000000919046068826
请建议任何可以执行此操作的命令或脚本?
提前致谢
答案 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 head
和man 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,
下一个字符可以像上面那样完成。我们也可以使用循环来做到这一点。