[英]Replace a word with awk using if else statement
我正在嘗試使用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
充當True條件,它觸發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
awk -F "," '{(if $3=='Normal') {$3=0}; else {$3=1} }' filename
{(if condition) {action}; else {action}}
{(if condition) {action}; else {action}}
。 這有幾個問題:
if
的條件是括號內的if (condition)
: if (condition)
而不是(if condition)
。 (if condition) {action}
,然后;
。 有了這個分號中, if
語句來獲取完成,接下來的動作將被執行反正。 因此,只要丟下它,然后說出if (condition) {...} else {...}
沒有了;
在else
之前。 $3=='Normal'
中使用單引號。 這將關閉awk語句,因此無法正確解釋,因此您需要使用雙引號: $3=="Normal"
。 print
以print
行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.