如何删除特定字符前后的字符串?

如何删除特定字符前后的字符串?

我有一个包含数千行的文件,其开头为:

>Miriam132_38138    Otu32555|1

我需要删除 ' Miriam*********' 以便每行以以下内容开头:

>Otu32555|1

第一个字符串始终是单词“Miriam”和一组 7、8 或 9 个字符的组合。我玩了一下,但sed没有取得多大成功。

答案1

如果你想从行中删除第一个“单词”,你可以使用类似的东西

awk '{print $2}' input.txt

假设“单词”之间有空格

答案2

假设 7-9 个字符的集合以空格结尾,并且该字符Miriam只在该行出现一次:

sed 's/\(.*\)Miriam.* /\1/' input.txt

\(.*\)部分“保存”之前匹配的模式Miriam并将其放回\1

答案3

sed '/^Miriam/s/[^ ]* *//' <in >out

...会做。它将从以字符串开头的任何行中删除米里亚姆仅第一个非空格字符序列,后跟第一个空格字符字符串。它会不是影响任何一条线不是用该字符串打开,它将不是删除除第一次出现的所述字符串之外的所有内容。

答案4

使用awk

awk '{print substr($0, index($0, $2))}' file

仅删除第一个字段,但打印所有其他字段。

或者sed

sed 's/Miriam132_38138 \+//' file

如果>应保留行开头的 ,则仅删除第一个匹配项。

相关内容