1

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

A13R
W234H
Q1H

我想要的是用制表符分隔第一个字符和最后一个字符,就像这样

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

我尝试过的当然失败了

tr "" "\t" <test.txt>test2.txt

你能在bash中提出一些建议吗?

4

3 回答 3

3

这行得通吗?

sed 's/^./&\t/;s/.$/\t&/' file
于 2013-03-23T17:23:13.293 回答
2

纯重击;使用子字符串扩展:

while read line ; do
  echo -e "${line:0:1}\t${line:1:-1}\t${line: -1:1}"
done < data.txt
于 2013-03-23T18:01:55.293 回答
2

由于它在您的问题中被标记,您可以perl像这样的用户:

perl -pi -e 's/(.)(.*)(.)/\1\t\2\t\3/' < in.txt > out.txt

小心使用相同的文件进行输入和输出,如您的tr示例。请记住,您的 shell 将在执行命令之前打开输入和输出文件。输出文件是clobbered,因此当您的命令运行时,它会找到一个空文件。有一些工具可以解决这个问题,比如sponge,但是使用两个不同的文件名同样容易。

于 2013-03-23T17:23:07.580 回答