我可以在 bash 的文本文件中用 rs 替换 Affx- 吗

Can I replace Affx- with rs in text file in bash

我有一个巨大的文本文件。我想用 rs 替换所有以 Affx- 开头的字符串,然后是一些数字(如 Affx-74537382Affx-4374575)(以及相同的数字,如:rs74537382rs4374575。这可以用 sed -i 's/Affx-/rs/ 吗?

由于文件太大,我不确定如何验证命令是否正常工作。

您可以使用

sed -E 's/^Affx(-[0-9]+)/rs/' file > tmp && mv tmp file

详情:

  • -E - POSIX 启用 ERE 语法
  • ^ - 字符串开头
  • Affx - 文字文本
  • (-[0-9]+) - 第 1 组(</code> 指该组中的值):<code>- 和一个或多个数字。

参见 online demo:

#!/bin/bash
s='Blah-1233455
Affx-74537382
Some line here
Affx-4374575
End of text 123456778.'

sed -E 's/^Affx(-[0-9]+)/rs/' <<< "$s"

输出:

Blah-1233455
rs-74537382
Some line here
rs-4374575
End of text 123456778.