我存儲在一個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