在 "traditional" awks(例如 nawk)中使用什么代替区间表达式?
What to use in "traditional" awks (e.g. nawk) instead of interval expressions?
我有下一个表达式可以很好地与 gawk 一起工作:
sub(/-[0-9]{1,2}/, final_rssi, macs[]);
它用新数字替换包含字符串的数组中“-”后的 1 或 2 位数字。
比如 -35dB 可以用 -5dB 等代替
但是我需要使用一些东西来代替区间表达式,因为我有来自 Busybox v1.19.4 的 awk 的限制版本,它等同于 gawk -c
任何有关人们在发明区间表达式之前如何做到这一点的想法都会很棒。
对于一个数字的一两个匹配,您可以只使用/-[0-9][0-9]?/
。
?
表示出现零次或一次。
正在测试:
$ gawk -c 'BEGIN{a="-35dB";sub(/-[0-9][0-9]?/,"-5",a);print a}'
-5dB
命令 在 posix 模式下工作 ,您可以随时尝试使用 --posix
:
awk --posix '/-[0-9]{1,2}/' <<< '-12' # prints -12
请注意 -c
表示 传统 模式,与 Brian Kerningham 1977 年的 awk
相同。我怀疑你真的想要那个,除了教育原因。
我有下一个表达式可以很好地与 gawk 一起工作:
sub(/-[0-9]{1,2}/, final_rssi, macs[]);
它用新数字替换包含字符串的数组中“-”后的 1 或 2 位数字。
比如 -35dB 可以用 -5dB 等代替
但是我需要使用一些东西来代替区间表达式,因为我有来自 Busybox v1.19.4 的 awk 的限制版本,它等同于 gawk -c
任何有关人们在发明区间表达式之前如何做到这一点的想法都会很棒。
对于一个数字的一两个匹配,您可以只使用/-[0-9][0-9]?/
。
?
表示出现零次或一次。
正在测试:
$ gawk -c 'BEGIN{a="-35dB";sub(/-[0-9][0-9]?/,"-5",a);print a}'
-5dB
命令 在 posix 模式下工作 ,您可以随时尝试使用 --posix
:
awk --posix '/-[0-9]{1,2}/' <<< '-12' # prints -12
请注意 -c
表示 传统 模式,与 Brian Kerningham 1977 年的 awk
相同。我怀疑你真的想要那个,除了教育原因。