我在一个名为Target_id_convert.txt的文件中有一个列表

70S ribosome
ALK tyrosine kinase receptor
ATP
ATP synthase

期望输出
('70S ribosome','ALK tyrosine kinase receptor','ATP','ATP synthase')

我写了这段代码
sed -e "s/'/'\\\\''/g;s/\(.*\)/'\1'/" Target_id_convert.txt  > Target_id_convert1.txt
tr '\n' ',' < Target_id_convert1.txt > Target_id_convert_output.txt

然后,我必须手动编辑文件并在Target_id_convert_output.txt文件中添加(),请告诉我如何高效地一次性完成,因为这一切都应该是自动化的。

最佳答案

假设您的记录是两行分隔的,我将使用一个sed/awk组合框:

<file sed "/[^[:blank:]]/ s/.*/'&'/g" |
awk '{ $1=$1; print "(" $0 ")" }' RS= FS='\n' OFS=,

如果输入是:
70S ribosome
ALK tyrosine kinase receptor
ATP
ATP synthase

70S ribosome
ALK tyrosine kinase receptor
ATP
ATP synthase

输出为:
('70S ribosome','ALK tyrosine kinase receptor','ATP','ATP synthase')
('70S ribosome','ALK tyrosine kinase receptor','ATP','ATP synthase')

关于bash - 列表处理,将列表转换为撇号和逗号分隔的记录,并用方括号括起来,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43321210/

10-14 18:07
查看更多