0

在以下阴影类型文件中:

user1:*:11111:0:88888:7:::
user2:*:11111:0:88888:7:::
user3:!!:11111:0:88888:7:::
user4:!!:11111:0:88888:7:::
user5:!!:11111:0:88888:7:::
user6:!!:11111:0:88888:7:::

例如,我需要找到用户 4,然后替换“!!” 用'something_else'。有谁知道我该怎么做?

编辑:对不起,我不清楚 - '!!' 可以是任何东西。

4

2 回答 2

2

你已经接近了你的命令。最好只在搜索的行中使用替换命令,而不是尝试匹配文字,使用[^...]在未找到字符时进行匹配,在这种情况下是冒号。尝试:

sed '/^user4:/ s/:[^:]*/:something_else/' infile

它产生:

user1:*:11111:0:88888:7:::
user2:*:11111:0:88888:7:::
user3:!!:11111:0:88888:7:::
user4:something_else:11111:0:88888:7:::
user5:!!:11111:0:88888:7:::
user6:!!:11111:0:88888:7:::
于 2013-07-31T20:27:20.200 回答
1

试试这个:

 sed '/^user4:/s/!!/something else/' file
于 2013-07-31T20:29:02.413 回答