我存储在一个txt文件中的列值的集合,标签分离值
A13R
W234H
Q1H
我要的是一个选项卡,第一个字符和最后一个字符分隔,这样
东西A "\t" 13 "\t" R
W "\t" 234 "\t" H
我尝试和ofcourse失败是
tr "" "\t" <test.txt>test2.txt
你可以建议在bash的东西。
我存储在一个txt文件中的列值的集合,标签分离值
A13R
W234H
Q1H
我要的是一个选项卡,第一个字符和最后一个字符分隔,这样
东西A "\t" 13 "\t" R
W "\t" 234 "\t" H
我尝试和ofcourse失败是
tr "" "\t" <test.txt>test2.txt
你可以建议在bash的东西。
能完成这项工作?
sed 's/^./&\t/;s/.$/\t&/' file
由于它被标记在你的问题,你可以用户perl
像:
perl -pi -e 's/(.)(.*)(.)/\1\t\2\t\3/' <in.txt> out.txt
小心使用的输入和输出相同的文件中像你tr
例子。请记住,在执行命令之前,您的shell将打开之前的输入和输出文件。输出文件是破损,所以当你的命令运行时,它会发现一个空文件。有些工具可以解决这个问题,比如sponge
,但使用两个不同的文件名就很容易。
Pure Bash;使用子字符串扩展:
while read line ; do
echo -e "${line:0:1}\t${line:1:-1}\t${line: -1:1}"
done < data.txt
是的,它确实有效。 :) – Angelo 2013-03-23 17:25:13
如果有人需要使用Perl(例如Windows)执行此操作,它将是'perl -pe's /^./$ &\t/; s /.$/ \ t $&/'file'。 (如果您希望它在原地修改文件,您可以添加['-i'](http://p3rl.org/perlrun)开关) – 2013-03-24 14:44:19