您好我正在编写shell脚本,我必须通过引用两个参数将状态O替换为B,如下所示
1. trng-linx | 17.2.18. | change status to O to P in project tasklist | O | 1m
2. trng-lvk1 | 17.2.18. | change P to O in project tasklist | O | 1m
我想将状态从| O |
更改为| B |
,用于匹配模式trng-linx
和17.2.18.
的行(在此示例中为第一行) p>
我尝试使用此
sed -i '/^.*\(17\.2\.18\.\).*/s/O/B/' tasklist.txt
但它会替换两行的状态而不是第一行。
这是我想要的输出:
1. trng-linx | 17.2.18. | change status to O to P in project tasklist | B | 1m
2. trng-lvk1 | 17.2.18. | change P to O in project tasklist | O | 1m
请帮我弄清楚。
答案 0 :(得分:3)
sed '/trng-linx | 17.2.18. |/s/O\s|/B\ |/' file
答案 1 :(得分:1)
试试这个:
awk -F'|' '{OFS="|"; if ($1 ~ /trng-linx/ && $2 ~ /17\.2\.18\./) $4=" B "}1' tasklist.txt