Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex Sed正则表达式和反向引用_Regex_Bash_Sed - Fatal编程技术网

Regex Sed正则表达式和反向引用

Regex Sed正则表达式和反向引用,regex,bash,sed,Regex,Bash,Sed,我想从格式(hostname,,)的网络组中提取主机名。我使用了以下sed命令。似乎它们都不起作用。有人能给我指出正确的正则表达式结构吗?谢谢 bash-3.2# ypcat -k netgroup|grep '^gridprod2 '|sed 's/(\([a-zA-Z0-9]*\),,)/\1\n/g' gridprod2 (sbpsvrso766,,) (sbpsvrso767,,) (sbpsvrso768,,) (sbpsvrso769,,) (sbpsvrso461,,) (sbps

我想从格式(hostname,,)的网络组中提取主机名。我使用了以下sed命令。似乎它们都不起作用。有人能给我指出正确的正则表达式结构吗?谢谢

bash-3.2# ypcat -k netgroup|grep '^gridprod2 '|sed 's/(\([a-zA-Z0-9]*\),,)/\1\n/g'
gridprod2 (sbpsvrso766,,) (sbpsvrso767,,) (sbpsvrso768,,) (sbpsvrso769,,) (sbpsvrso461,,) (sbpsvrso462,,) (sbpsvrso463,,) (sbpsvrso464,,) (sbpsvrso465,,) (sbpsvrso466,,) (sbpsvrso467,,)  (sbpsvrso468,,) (sbtorsvr569,,) (sbpsvrwm841,,) (sbpsvrwm842,,) (sbpsvrwm843,,) (sbpsvrwm844,,) (sbpsvrwm845,,) (sdpsvrso804,,)

bash-3.2# ypcat -k netgroup|grep '^gridprod2 '|sed 's/(\([:alnum:]*\),,)/\1\n/g'
gridprod2 (sbpsvrso766,,) (sbpsvrso767,,) (sbpsvrso768,,) (sbpsvrso769,,) (sbpsvrso461,,) (sbpsvrso462,,) (sbpsvrso463,,) (sbpsvrso464,,) (sbpsvrso465,,) (sbpsvrso466,,) (sbpsvrso467,,)  (sbpsvrso468,,) (sbtorsvr569,,) (sbpsvrwm841,,) (sbpsvrwm842,,) (sbpsvrwm843,,) (sbpsvrwm844,,) (sbpsvrwm845,,) (sdpsvrso804,,)

使用
grep-oP
代替:

也许更准确的是

grep -oP '(?<=\().*?(?=,,\))'

grep-oP'(?An
awk
version:

awk -F, 'NR>1 {print $1}' RS="(" file
sbpsvrso766
sbpsvrso767
sbpsvrso768
sbpsvrso769
.....

gridprod2行是来自ypcat的行吗?如果是这样,那么当我这样做时,它似乎工作得很好什么版本的
sed
?第一个命令对我工作得很好,第二个命令也可以,如果你将
[:alnum://code>更改为
[:alnum:]
。嗨,当我从发布的内容复制命令时,它们工作得很好。我简直不敢相信:)
grep -oP '(?<=\().*?(?=,,\))'
awk -F, 'NR>1 {print $1}' RS="(" file
sbpsvrso766
sbpsvrso767
sbpsvrso768
sbpsvrso769
.....