If statement 使用if-else语句将单词替换为awk
我试图用if-else语句替换awk中的一个单词 下面是我已经尝试过的。基本上,如果第三个单词是“Normal”,则将其更改为0,否则将其更改为1If statement 使用if-else语句将单词替换为awk,if-statement,awk,If Statement,Awk,我试图用if-else语句替换awk中的一个单词 下面是我已经尝试过的。基本上,如果第三个单词是“Normal”,则将其更改为0,否则将其更改为1 awk -F "," '{(if $3=='Normal') {$3=0}; else {$3=1} }' filename 您需要一个适当的if-else条件,然后是一个触发器来打印行: awk '{if ($3=="Normal") {$3=0} else {$3=1}}1' file 这里,1作为一个真实条件,它触发了awk的默认行为,包括
awk -F "," '{(if $3=='Normal') {$3=0}; else {$3=1} }' filename
您需要一个适当的
if-else
条件,然后是一个触发器来打印行:
awk '{if ($3=="Normal") {$3=0} else {$3=1}}1' file
这里,1
作为一个真实条件,它触发了awk
的默认行为,包括打印当前行
不过,您可以使用三元运算符进行此操作:
awk '{$3=($3=="Normal") ? 0 : 1}1' file
还要注意,您正在处理,
分隔字段,因此需要在以后保留它们。为此,请使用OFS(输出字段分隔符)。总而言之:
awk 'BEGIN{FS=OFS=","} {$3=($3=="Normal") ? 0 : 1}1' file
给出如下示例文件:
$ cat a
hello,how,are,you
i,am,Normal,buuu
这将返回:
$ awk 'BEGIN{FS=OFS=","} {$3=($3=="Normal") ? 0 : 1}1' a
hello,how,1,you
i,am,0,buuu
你的方法有什么问题?
- 您正在使用
。这有几个问题:{(如果条件){action};else{action}
中的条件是括号内的条件:if
而不是if(条件)
(if条件)
- 你说
,然后说(如果条件){action}
代码>。有了这个分号,
-语句就完成了,下一个动作也将被执行。所以只要把它放下,说if
,而不用这个if(condition){…}else{…}
之前代码>在<代码>其他
- 您在
中使用单引号。这将关闭awk语句,因此无法正确解释,因此需要使用双引号:$3=='Normal'
$3==“Normal”
- 缺少打印的
,无法打印该行文件
}
之后的0
也是可疑的。awk'BEGIN{FS=OFS=“,”}{$3=($3=“Normal”)?0:1}1{$4=($3=“Normal”)?0:1}0file@adrianwhite只需放下0
并说awk'BEGIN{FS=OFS=“,”}{$3=($3=“Normal”)尽管使用awk'BEGIN{FS=OFS=“,”}{if($3=“Normal”){$3=0;$4=0}或者{$3=1;$4=1}}}1'文件
可能更容易阅读,但是0:1}{$4=“Normal”){$3=0;$4=0}。
awk -F "," '{(if $3=='Normal') {$3=0}; else {$3=1} }' filename