在以下阴影类型文件中:
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'。有谁知道我怎么做到这一点?
编辑:对不起,我不清楚 - '!!'可能是任何事情。答案 0 :(得分:2)
您接近sed命令。最好只在搜索的行中使用替换命令,而不是尝试匹配文字使用[^...]
以匹配未找到的字符,在本例中为冒号。尝试:
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:::
答案 1 :(得分:1)
试试这个:
sed '/^user4:/s/!!/something else/' file