我使用以下正则表达式查找电子邮件地址:
echo "[email protected]" | awk '/^([a-zA-Z0-9_-.\+]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$/ {print $0}'
但它返回错误:
awk: cmd. line:1: error : tent of \{\}
我使用以下正则表达式查找电子邮件地址:
echo "[email protected]" | awk '/^([a-zA-Z0-9_-.\+]+)@([a-zA-Z0-9_-.]+).([a-zA-Z]{2,5})$/ {print $0}'
但它返回错误:
awk: cmd. line:1: error : tent of \{\}
我想将以下正则表达式与 awk 一起使用来验证电话号码:
echo 012-3456-7890 | awk '/^\(?0[1-9]{2}\)?(| |-|.)[1-9][0-9]{3}( |-|.)[0-9]{4}$/ {print $0}'
但我收到以下错误:
awk: line 1: regular expression compile failed (missing operand)
为什么以下命令打印数值?
$ iostat | sed -n '/[:digit:]/!p'
1.56 1.38 0.31 0.34 0.03 96.38
我们可以使用语法${var##pattern}
和${var%%pattern}
提取 IPv4 地址的最后和第一部分:
IP=109.96.77.15
echo IP: $IP
echo 'Extract the first section using ${var%%pattern}: ' ${IP%%.*}
echo 'Extract the last section using ${var##pattern}: ' ${IP##*.}
我们如何使用参数扩展提取 IPv4 地址的第二或第三部分?
这是我的解决方案:我使用数组并更改 IFS 变量。
:~/bin$ IP=109.96.77.15
:~/bin$ IFS=. read -a ArrIP<<<"$IP"
:~/bin$ echo ${ArrIP[1]}
96
:~/bin$ printf "%s\n" "${ArrIP[@]}"
109
96
77
15
此外,我还使用 、 和 命令编写了一些awk
解决sed
方案cut
。
现在,我的问题是:是否有基于不使用数组和 IFS 更改的参数扩展的更简单的解决方案?