我有一個文件看起來像這樣:刪除分隔符
('chr1', '1499102', '1500297')
('chr1', '1811177', '1812131')
('chr1', '2312420', '2313646')
('chr1', '6683999', '6684724')
N多行。
我想打印這樣的:
chr1 (tab) 1499102 (tab) 1500297
任何一個襯套殼或Python或Perl。
我有一個文件看起來像這樣:刪除分隔符
('chr1', '1499102', '1500297')
('chr1', '1811177', '1812131')
('chr1', '2312420', '2313646')
('chr1', '6683999', '6684724')
N多行。
我想打印這樣的:
chr1 (tab) 1499102 (tab) 1500297
任何一個襯套殼或Python或Perl。
使用python:
for line in open('filename'): print('%s\t%s\t%s'%(eval(line)))
(當然,你需要這個行Python腳本傳遞給Python解釋:python -c "..."
)
的eval()
功能是不是安全,並應如果您打算通過它處理未經驗證的用戶輸入,則視爲「邪惡」。如果這個功能對你真正的威脅,你可以使用這個版本,這是更爲嚴格,其輸入:
import ast
for line in open('filename'):
print('%s\t%s\t%s'%(ast.literal_eval(line)))
(here是ast.literal_eval()
的文檔)
Perl的一個班輪這裏^ _^
cat file.txt | perl -ni -e "printf qq{%s\t%s\t%s\n}, m/'([^']+)'/g;"
perl -pe "s/\('(.*)', \'([0-9]*)', '([0-9]*)'\)/$1\t$2\t$3/g" yourfile
的伎倆,我
perl -nE '$,="\t"; say eval' file.txt
利用Perl的輸出記錄分隔符的,$,
提供標籤。 eval
應該可以安全地使用單引號字符串,並且可能是最好的選擇。
作爲有效的Perl代碼,每一行都很好而且聰明。 –
awk -F "'" 'BEGIN {OFS="\t"} {print $2, $4, $6}' FILE
到目前爲止你有什麼? – Mat