簡體   English   中英

如果匹配則在awk中打​​印一列,如果不匹配,則仍打印該行(沒有該列)

[英]Print a column in awk if it matches, if not then still print the line (without that column)

我正在嘗試使用awk進行一些過濾,但目前遇到了問題。 我可以使awk匹配正則表達式並打印帶有列的行,但是我不能使其不帶有列的行打印。

awk -v OFS='\\t' '$6 ~ /^07/ {print $3, $4, $5, $6}' file

目前是我所擁有的。 如果正則表達式不匹配,我可以用awk打印不帶第六列的行嗎?

如果正則表達式不匹配,則將$6設置$6空字符串。 就如此容易。 應該這樣做:

awk -v OFS='\t' '{ if ($6 ~ /^07/) { print $3, $4, $5, $6 } else { $6 = ""; print $0; } }' file

請注意, $0是整行,包括$2 (您似乎沒有使用過)。 它將打印除第六列以外的每一列。

如果您只想在不存在匹配項時打印$3$4$5 ,請改用此命令:

awk -v OFS='\t' '{ if ($6 ~ /^07/) print $3, $4, $5, $6; else print $3, $4, $5 }' file

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM