【问题标题】:awk -F not finding strings if AND condition is used如果使用 AND 条件,awk -F 找不到字符串
【发布时间】:2014-04-18 08:26:03
【问题描述】:

我需要打印搜索到的字符串的第二部分

a="Hello I have a CREATE set TABLE as (uid, cid, mid)"

上面的字符串可以继续,只要它需要。

echo "$a" | awk -F"/CREATE/&&/TABLE/" '{print $2}'

它什么也不返回...

它应该返回:

as (uid, cid,mid)

【问题讨论】:

  • 你怎么能有一个CREATETABLE的字段分隔符?这没有任何意义......

标签: linux shell unix awk solaris


【解决方案1】:

试试这个:

echo "$a" | awk -F"CREATE.*TABLE" '{print $2}'
 as (uid, cid, mid)

不确定字段分隔符中的正则表达式是否有效。


使用可变字段分隔符:

sep=two
echo "_one_two_three_four" | awk -v var=$sep '{split($0,a,"_"var);print a[2]}'
_three_four

sep=three
echo "_one_two_three_four" | awk -v var=$sep '{split($0,a,"_"var);print a[2]}'
_four

【讨论】:

  • 是 .字段分隔符?
  • 我可以在搜索字符串中使用任何变量,例如awk -F"CREATE.*$string" '{print $2}'
  • @logan 我还没有看到使用过。但是您可以像这样使用split 而不是FSawk -v var=$string '{split($0,a,"CREATE.*"var);print a[2]}'
  • @logan 查看我更新的帖子,显示变量除数。
  • awk -F"CREATE.*$string" '{print $2}' 在 linux 中为我工作;它会在solaris中引起任何问题吗?
猜你喜欢
  • 1970-01-01
  • 2016-03-09
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 2020-05-02
  • 2019-12-01
  • 2018-09-09
  • 2019-03-03
相关资源
最近更新 更多