Unix 修改与在位行中文本的起始部分和中间部分匹配的行的步骤

Unix 修改与在位行中文本的起始部分和中间部分匹配的行的步骤,unix,awk,sed,Unix,Awk,Sed,我有一个文件是Abc.txt。它由许多行组成。 我想使用sed或任何其他命令来修改文件中的该行。 假设这行只有一个单词,如下所示 ABCDsdfg01klmn 这里我检查行是否以ABC开头,然后检查它是否也有00,在这种情况下,我想修改01,比如说PM。我怎么做 我想补充一些更具体的问题。我希望只对在ABCD和01之间有4个字符的行执行此操作。我不想修改它,例如在ABCD和01之间有3个或5个字符的行,例如ABCDsfg01klmn或ABCDsdfgh01klmn 使用sed: sed -r

我有一个文件是Abc.txt。它由许多行组成。 我想使用sed或任何其他命令来修改文件中的该行。 假设这行只有一个单词,如下所示

ABCDsdfg01klmn
这里我检查行是否以ABC开头,然后检查它是否也有00,在这种情况下,我想修改01,比如说PM。我怎么做

我想补充一些更具体的问题。我希望只对在ABCD和01之间有4个字符的行执行此操作。我不想修改它,例如在ABCD和01之间有3个或5个字符的行,例如
ABCDsfg01klmn
ABCDsdfgh01klmn

使用
sed

sed -r 's/^(ABCD.{4})01/\1PM/' file
如果一行包含
ABC
加上4个字符和一个01,则
s
命令用于将
01
替换为
PM
sed

sed -r 's/^(ABCD.{4})01/\1PM/' file
如果一行包含
ABC
加上4个字符和一个01,则
s
命令用于将
01
替换为
PM
sed

sed -r 's/^(ABCD.{4})01/\1PM/' file
如果一行包含
ABC
加上4个字符和一个01,则
s
命令用于将
01
替换为
PM
sed

sed -r 's/^(ABCD.{4})01/\1PM/' file


如果一行包含
ABC
加上4个字符和一个01,则
s
命令用于将
01
替换为
PM

进一步编辑我的问题。很抱歉,前面的一个文件不完整。我想它应该是
sed-r'/ABC.{5}01/s/01/PM/'文件
根据您对问题的评论,可能会产生
ABCPM0101…
——您可能需要
sed's/^\(ABC…)01/\1PM/'
@glennjackman,尽管命令更简单,它不会产生相同的输出吗?有一个条件,OP只想匹配
^ABC
(否D),答案是否。您的将替换行中的第一个“01”,无论它出现在字符串中的哪个位置;我的问题替换了四个“空格”字符后的一个。进一步编辑了我的问题。很抱歉,前面的一个文件不完整。我想它应该是
sed-r'/ABC.{5}01/s/01/PM/'文件
根据您对问题的评论,可能会产生
ABCPM0101…
——您可能需要
sed's/^\(ABC…)01/\1PM/'
@glennjackman,尽管命令更简单,它不会产生相同的输出吗?有一个条件,OP只想匹配
^ABC
(否D),答案是否。您的将替换行中的第一个“01”,无论它出现在字符串中的哪个位置;我的问题替换了四个“空格”字符后的一个。进一步编辑了我的问题。很抱歉,前面的一个文件不完整。我想它应该是
sed-r'/ABC.{5}01/s/01/PM/'文件
根据您对问题的评论,可能会产生
ABCPM0101…
——您可能需要
sed's/^\(ABC…)01/\1PM/'
@glennjackman,尽管命令更简单,它不会产生相同的输出吗?有一个条件,OP只想匹配
^ABC
(否D),答案是否。您的将替换行中的第一个“01”,无论它出现在字符串中的哪个位置;我的问题替换了四个“空格”字符后的一个。进一步编辑了我的问题。很抱歉,前面的一个文件不完整。我想它应该是
sed-r'/ABC.{5}01/s/01/PM/'文件
根据您对问题的评论,可能会产生
ABCPM0101…
——您可能需要
sed's/^\(ABC…)01/\1PM/'
@glennjackman,尽管命令更简单,它不会产生相同的输出吗?有一个条件,OP只想匹配
^ABC
(否D),答案是否。您的将替换行中的第一个“01”,无论它出现在字符串中的哪个位置;我的将替换四个“间距”字符后的一个。
ABCD03020101klmn
abo
0101
开头之间有4个字符(
0302
)-您希望这与您的regexp匹配吗?与
ABCD010101有什么关系?
?它是否匹配?
ABCD03020101klmn
ABCD
0101
开头之间有4个字符(
0302
)-您希望它与您的regexp匹配吗?与
ABCD010101…
有什么关系?它是否匹配?
ABCD03020101klmn
ABCD
0101
开头之间有4个字符(
0302
)-您希望它与您的regexp匹配吗?与
ABCD010101…
有什么关系?它是否匹配?
ABCD03020101klmn
ABCD
0101
开头之间有4个字符(
0302
)-您希望它与您的regexp匹配吗?与
ABCD010101…
有什么关系?这是一场比赛吗?