使用awk从字符串中提取foo.com的好方法是什么?
ImaString (foo1.com, ,bar.com) (foo2.com, , bar.com)
我想要的输出: foo1.com foo2.com
答案 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数组中。