从查找表更改字符串的脚本?

时间:2013-11-28 23:06:40

标签: bash replace sed

我不是程序员而且我不知道我在做什么,所以这可能已经在很多时候得到了回答,但是我不知道找到答案的条款(或者下一步该做什么我找到了答案)...

我有一个文本文件,里面有一堆我要替换的字符串,还有一个excel文件,其中一列是要替换的字符串,一列是替换。

要替换的字符串看起来像这样(但命名不一致所以它不能只是一个减少,需要一个查找表):

gi|5566332|gb|AF164131.1| Uroleptus pisces macronuclear small-subunit ribosomal RNA gene, complete sequence

使用以下内容替换它们的字符串:

AF164131

(1)我应该如何格式化查找表 - 类似于制表符分隔文件?

(2)如何编写脚本来进行替换?

这可能只是一些简单的BASH或sed脚本,但我还没有真正掌握如何编写它们......

2 个答案:

答案 0 :(得分:1)

您可以像这样使用awk

awk '{sub(/AF164131/,"new txt")}1' file

答案 1 :(得分:1)

将excel电子表格以制表符分隔的文本导出到文件名“map.txt”,然后执行以下操作:

awk '
NR==FNR { map[$1] = $2; next }
$0 in map { $0 = map[$0] }
{ print }
' map.txt textfile

假设textfile包含您要替换的字符串。如果这对您不起作用,请使用几行代表性输入和预期输出更新您的问题,因为您的文本文件格式不明确。

相关问题