我正在使用sed
从大文件中提取。下面似乎以下面的格式提取数据,从那里我不知道如何清理文件以查看所需的输出。可能有一种更好的方式我不确定如何。谢谢你:)。
$2
$3
中的所有逗号都会转到;
$3
文本已删除前面的空格文件以空格分隔
81201 APC gene analysis; full gene sequence
81210 BRAF , gene analysis, full gene sequence, V600 variant
所需的输出制表符分隔
81201 APC gene analysis;full gene sequence
81210 BRAF gene analysis;full gene sequence;V600 variant
SED
sed -e 's/([^()]*)//g' file.txt | sed '$!N;s/\n/ /' > file
原始文件
81201 APC (adenomatous polyposis coli) (eg, familial adenomatosis
polyposis [FAP], attenuated FAP) gene
analysis; full gene sequence
81210 BRAF (B-Raf proto-oncogene, serine/threonine kinase) (eg, colon
cancer), gene analysis, V600 variant(s)
答案 0 :(得分:1)
我不确定所显示的命令是否按预期工作,但由于这不是您问题的一部分,我将忽略它。
这是一种使用几个相对简单的表达式进行最终清理的方法:
sed -e 's/^\s*\([^ \t]\+\)\s\+\([^ \t]\+\)\s\+[,;]\?\s*\(.*\)/\1\t\2\t\3/' \ -e 's/[,;]\s*/;/g'
第一个表达式仅捕获您想要的部分:没有多余的空格或逗号。粗体部分表示保留的捕获组。第二部分用分号替换所有逗号,因为在应用表达式时第三个字段之外不应该有任何逗号。请注意,sed
始终使用贪婪量词,以便\s\+
正确处理空白问题。
根据您的sed
版本,您可能需要稍微进行转义。您可能还需要将\s
替换为[ \t]
。
<强>输入强>
81201 APC gene analysis; full gene sequence
81210 BRAF , gene analysis, full gene sequence, V600 variant
<强>输出强>
81201 APC gene analysis;full gene sequence
81210 BRAF gene analysis;full gene sequence;V600 variant