如果字符串具有共同模式,则替换该字符串

如果字符串具有共同模式,则替换该字符串

我有一个如下所示的文件:

0/1:34:89:09    0/0:985:083:67 0/1:687:90887:975    0/1:54:79:25    0/0:5:83:67 0/1:67:9087:97  0/1:574:779:225 0/0:275:73:627 0/1:67:47:77

我想替换0/0以 开头的任何列homo,以便我所需的文件如下所示:

0/1:34:89:09    homo 0/1:687:90887:975  0/1:54:79:25    homo 0/1:67:9087:97 0/1:574:779:225 homo 0/1:67:47:77

答案1

我假设“homo”指的是“相同”,因为在此处理中将平等地应用于所有输入文件,无论扩展名如何。

sed -iBAK 's_\(0/0:[0-9]\+:[0-9]\+:[0-9]\+\)_homo_g' text.txt

使用-iBAKBAK 后缀对原始文件进行备份。

答案2

使用sed -r 's|0/0[^ $]+|homo|g'

$ echo "0/1:34:89:09 0/0:985:083:67 0/1:687:90887:975 0/1:54:79:25 0/0:5:83:67 0/1:67:9087:97 0/1:574:779:225 0/0:275:73:627 0/1:67:47:77 0/0:275:73:628" | \
sed -r 's|0/0[^ $]+|homo|g'
0/1:34:89:09 homo 0/1:687:90887:975 0/1:54:79:25 homo 0/1:67:9087:97 0/1:574:779:225 homo 0/1:67:47:77 homo

相关内容