删除分隔符

时间:2011-10-07 10:46:04

标签: python perl shell

我的文件看起来像这样:

('chr1', '1499102', '1500297')
('chr1', '1811177', '1812131')
('chr1', '2312420', '2313646')
('chr1', '6683999', '6684724')

N行。

我想像这样打印:

chr1 (tab) 1499102 (tab) 1500297

任何一个衬垫外壳或python或perl。

6 个答案:

答案 0 :(得分:8)

perl -nE '$,="\t"; say eval' file.txt

利用perl的输出记录分隔符$,来提供选项卡。 eval应该可以安全地用于单引号字符串,并且可能是最佳选择。

答案 1 :(得分:4)

使用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)))

hereast.literal_eval())的文档

答案 2 :(得分:4)

Perl one-liner在这里^ _ ^

cat file.txt | perl -ni -e "printf qq{%s\t%s\t%s\n}, m/'([^']+)'/g;"

答案 3 :(得分:3)

perl -pe "s/\('(.*)', \'([0-9]*)', '([0-9]*)'\)/$1\t$2\t$3/g" yourfile

为我做了伎俩

答案 4 :(得分:2)

sed / awk也会为你工作吗?

awk '{print $1"\t"$2"\t"$3}' your_file_with_stuff_in_it | sed "s/[')(,]//g"

答案 5 :(得分:2)

awk -F "'" 'BEGIN {OFS="\t"} {print $2, $4, $6}' FILE