Awk:在bcracket中提取内容

时间:2011-06-13 12:30:57

标签: regex awk

使用awk从字符串中提取foo.com的好方法是什么?

ImaString (foo1.com, ,bar.com) (foo2.com, , bar.com)

我想要的输出: foo1.com foo2.com

4 个答案:

答案 0 :(得分:2)

如果逗号分隔列表中有多个字段:

awk -F, -v RS="[)(]" 'NF>1{print $1}' inputfile

答案 1 :(得分:1)

对于讽刺性的评论道歉,但问题的措辞并不明确。您可以尝试将FS设置为正则表达式“(|,”并让awk自动为您提取字段:

$ awk -F ',|\\(' ...

答案 2 :(得分:0)

问题仍然有点不清楚,你要求这个吗?

$ echo "ImaString (foo.com, ,bar.com) (foo.com, , bar.com)" | 
  awk -F '(' '{sub(/,.*/,"", $2);{print $2}}'
foo.com

答案 3 :(得分:0)

你确定要使用awk吗? Sed和grep似乎是更好的选择。

$ echo "ImaString (foo1.com, ,bar.com) (foo2.com, , bar.com)" | 
  grep -E -o '\(([a-zA-Z0-9]*\....),' | sed -e 's/^.//' -e 's/,$//'
foo1.com
foo2.com

将结果转储到bash变量中,用wc计算它们,或者将它们粘贴在bash数组中。