【发布时间】:2017-04-23 04:29:59
【问题描述】:
有没有办法在不使用循环的情况下使用 sed 替换整个文件中字符串的开头?
例如,我的源数据如下:
str_address: 123 main street
str_desc: Apt3
str_desc: 2nd floor
str_city: new york
str_desc: mailing address
现在,该文件将有数千个地址,但我希望“str_desc”出现在“str_address”之后和“@”之前987654324@" 将替换为 "str_address",但在 str_city 之后出现的任何 "str_desc" > 保持不变。
期望的输出:
str_address: 123 main street
str_address: Apt3
str_address: 2nd floor
str_city: new york
str_desc: mailing address
我可以提取此信息,
cat file | awk '/str_city/{f=0} f; /str_address/{f=1}'
给了
str_desc: Apt3
str_desc: 2nd floor
但我无法将第一个“str_desc”更改为“str_address”。
【问题讨论】: