我在txt文件中存储的列中有一组值
A13R
W234H
Q1H
我想要的是用标签分隔第一个字符和最后一个字符,如下所示
A "\t" 13 "\t" R
W "\t" 234 "\t" H
我尝试过的,当然失败的是
tr "" "\t" <test.txt>test2.txt
你可以在bash中提出一些建议。
答案 0 :(得分:3)
这有用吗?
sed 's/^./&\t/;s/.$/\t&/' file
答案 1 :(得分:2)
由于它已在您的问题中标记,您可以像perl
一样使用
perl -pi -e 's/(.)(.*)(.)/\1\t\2\t\3/' < in.txt > out.txt
请注意使用与tr
示例相同的文件进行输入和输出。请记住,在执行命令之前,shell将打开输入和输出文件。输出文件是 clobbered ,因此当您的命令运行时,它会找到一个空文件。有一些工具可以解决这个问题,比如sponge
,但使用两个不同的文件名也很容易。
答案 2 :(得分:2)
Pure Bash;使用子字符串扩展:
while read line ; do
echo -e "${line:0:1}\t${line:1:-1}\t${line: -1:1}"
done < data.txt