簡體   English   中英

如何在awash中組合awk和if

[英]How to combine awk and if in bash

我有2個文本文件,名為newport,面板端口如下所示。 我的awk命令根據它們的公共行將兩個文件組合到port.txt。 我也想要在mypurpose中描述的新文件中不常見的行。 我無法組合awk和if或另一個| awk命令。

awk -F' ' 'FNR==NR{a[$1]=$2; next} {print $1,a[$1]}' newport.txt panelport.txt > port.txt

紐波特

LTECD11L 444

的PanelPort

ENODEB1513L #
ENODEB1521L #
ENODEB1522L #
ENODEB1532L #
ENODEB1533L #
LTECD11L #
LTECD12L #
LTECD14L #
L650112L #
LTEG211L_1 #
LTEG212L_1 #
NodeB1213L #
NodeB1214L #
ENODEB1612L #
ENODEB1614L #
ENODEB1617L #
NodeB1113L #
NodeB1114L #
BB663011L #
BB663012L #

港口

ENODEB1513L 
ENODEB1521L 
ENODEB1522L 
ENODEB1532L 
ENODEB1533L 
LTECD11L 444
LTECD12L 
LTECD14L 
L650112L 
LTEG211L_1 
LTEG212L_1 
NodeB1213L 
NodeB1214L 
ENODEB1612L 
ENODEB1614L 
ENODEB1617L 
NodeB1113L 
NodeB1114L 
BB663011L 
BB663012L 

我的目的

ENODEB1513L #
ENODEB1521L #
ENODEB1522L #
ENODEB1532L #
ENODEB1533L #
LTECD11L 444
LTECD12L #
LTECD14L #
L650112L #
LTEG211L_1 #
LTEG212L_1 #
NodeB1213L #
NodeB1214L #
ENODEB1612L #
ENODEB1614L #
ENODEB1617L #
NodeB1113L #
NodeB1114L #
BB663011L #
BB663012L #

你可以嘗試一下嗎?

awk 'FNR==NR{a[$1]=$0;next} {$0=($1 in a?a[$1]:$1" #")} 1' newport  panelport

如果你不想在輸出中輸出# ,那么下面的內容可能有所幫助

awk 'FNR==NR{a[$1]=$0;next} {$0=($1 in a?a[$1]:$1)} 1' newport  panelport

我會做:

awk 'FNR==NR{a[$1]=$0;next} $1 in a{$0=a[$1]}1' newport  panelport

暫無
暫無

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

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