我如何将3个命令合并为1个,用于regex和awk + want to regex的3种可能性,例如:9,10,11

yqhsw0fo  于 2023-08-08  发布在  其他
关注(0)|答案(3)|浏览(75)

如何合并这3个命令

[senz_sims_db:/home/sims] awk -F, '$2=="AMWPF" && $4=="RRH[0_11_0]/SFP[0]" {print $0}' data/20230706/IM_HW_20230706.csv 
eNB_618378,AMWPF,RRHSFP,RRH[0_11_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211300012948  ,2021-03-26,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[11]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] awk -F, '$2=="AMWPF" && $4=="RRH[0_10_0]/SFP[0]" {print $0}' data/20230706/IM_HW_20230706.csv 
eNB_618378,AMWPF,RRHSFP,RRH[0_10_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211300012955  ,2021-03-26,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[10]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] 
[senz_sims_db:/home/sims] awk -F, '$2=="AMWPF" && $4=="RRH[0_9_0]/SFP[0]" {print $0}' data/20230706/IM_HW_20230706.csv 
eNB_618378,AMWPF,RRHSFP,RRH[0_9_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211200053451  ,2021-03-19,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[9]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)

字符串
转换为1个regex命令,例如比如
xxx RRH[0_[9][10][11]_0]/SFP[0] xxx

eNB_618378,AMWPF,RRHSFP,RRH[0_11_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211300012948  ,2021-03-26,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[11]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)
eNB_618378,AMWPF,RRHSFP,RRH[0_10_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211300012955  ,2021-03-26,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[10]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)
eNB_618378,AMWPF,RRHSFP,RRH[0_9_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211200053451  ,2021-03-19,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[9]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)

编辑-基于下面的答案,第一个不起作用,第二个起作用

>awk -F, '$2=="AMWPF" && $4~"^RRH\[0_(9|10|11)_0]/SFP\[0]$" {print $0}' data/20230706/IM_HW_20230706.csv 
awk: cmd. line:1: warning: escape sequence `\[' treated as plain `['
>awk -F, '$2=="AMWPF" && $4 ~ /^RRH\[0_(9|10|11)_0]\/SFP\[0]$/  {print $0}' data/20230706/IM_HW_20230706.csv 
eNB_618378,AMWPF,RRHSFP,RRH[0_9_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211200053451  ,2021-03-19,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[9]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)
eNB_618378,AMWPF,RRHSFP,RRH[0_10_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211300012955  ,2021-03-26,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[10]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)
eNB_618378,AMWPF,RRHSFP,RRH[0_11_0]/SFP[0],SFP,N/A,RTXM228-601     ,N/A,WTD             ,HN211300012948  ,2021-03-26,N/A,N/A,N/A,ENB[618378]/SHELF[0]/SLOT[1]/PORT[11]/CASC[0]/CPRI_PORT[0],N/A,-,wavelength=TX:1310(nm)/RX:-(nm)

pvabu6sv

pvabu6sv1#

这两种方法都可以工作:

$4 ~ /^RRH\[0_(9|10|11)_0]\/SFP\[0]$/

$4 ~ "^RRH\\[0_(9|10|11)_0]/SFP\\[0]$"

$4 ~ "^RRH[[]0_(9|10|11)_0]/SFP[[]0]$"

字符串
有关两个分隔符/"之间的区别,请参见https://www.gnu.org/software/gawk/manual/gawk.html#Computed-Regexps。
如果您愿意,也可以使用(9|1[01])代替(9|10|11)

wqsoz72f

wqsoz72f2#

您可以利用捕获组来提供可能的匹配。
需要注意的是,[]字符是语法的一部分,因此我使用的不是转义值,而是.,这是通配符。

RRH.0_(11|10|9)_0..SFP.0.

字符串
不过,你也可以用,

RRH\[0_(11|10|9)_0\]\/SFP\[0\]


这里是 AWK 文档,概述了正则表达式的使用。

xdyibdwo

xdyibdwo3#

字符串样式:

$4 ~ "^RRH[[]0_(9|1[01])_0[]][/]SFP[[]0[]]$"

字符串
或正则表达式样式

$4 ~ /^RRH[[]0_(9|10|11)_0[]]\/SFP[[]0[]]$/

相关问题