列表处理,将列表转换为撇号和逗号分隔的记录,用括号括起来

KHA*_*fan 2 bash awk

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

70S ribosome
ALK tyrosine kinase receptor
ATP
ATP synthase
Run Code Online (Sandbox Code Playgroud)

期望的输出

('70S ribosome','ALK tyrosine kinase receptor','ATP','ATP synthase')
Run Code Online (Sandbox Code Playgroud)

我写了这段代码

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
Run Code Online (Sandbox Code Playgroud)

然后我必须手动编辑文件并在Target_id_convert_output.txt文件中添加(),请让我知道如何有效地完成所有操作,因为它应该是自动化的.

Ken*_*ent 5

这个awk单行应该做你想要的:

awk -v q="'" '{$0=q $0 q;printf "%s%s", (NR==1?"(":","),$0}END{print ")"}' file
Run Code Online (Sandbox Code Playgroud)

我声明一个var q有单引号('),以避免许多转义.