如果其他列值与字符串匹配,则使用awk修改列值

问题描述 投票:-1回答:1

我具有文件的以下输出:

host1|ip1|LCOS|
host2|ip2|Linux|
hos3|ip3|Linux|DiskStation Manager

设置了$4DiskStation Manager)的地方,$3应该更改为DiskStation Manager

我尝试了以下但没有任何变化

{ if( $4 ~ /Diskstation Manager/) $3=$4}
awk
1个回答
0
投票
下面是您的尝试的简化版本,其中没有在if操作部分内显示明确的{..}条件。这样的好处是可以忽略处理

any其他包含您期望的字符串的$4的其他行[[not。 {..}1会根据列值和输入/输出字段分隔符的修改简单地重写您的行。

awk -v FS="|" 'BEGIN { OFS = FS } $4 == "DiskStation Manager" { $3 = $4 }1' 或者,如果您要使用正则表达式方法,请在字符串周围放置锚以使其完全匹配,

$4 ~ /^DiskStation Manager$/
© www.soinside.com 2019 - 2024. All rights reserved.