分隔值的选项卡

时间:2013-03-23 17:18:13

标签: perl bash shell

我在txt文件中存储的列中有一组值

A13R
W234H
Q1H

我想要的是用标签分隔第一个字符和最后一个字符,如下所示

A "\t" 13 "\t" R
W "\t" 234 "\t" H

我尝试过的,当然失败的是

tr "" "\t" <test.txt>test2.txt
你可以在bash中提出一些建议。

3 个答案:

答案 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