shell / bash:使用sed / awk获取特殊字符之间的字符串

时间:2016-04-14 16:05:39

标签: bash shell awk sed

假设我有一个字符串

Al99.NegFRho.ZeroRhoR.ZeroPhiR.eam.alloy

我希望在2个点之间获得3个字符串

NegFRho
ZeroRhoR
ZeroPhiR

我怎么能用sed或awk来做呢?

2 个答案:

答案 0 :(得分:4)

您可以使用awk:

let f y = let x = ref 5 in y;;
print_int !x;;

使用str='Al99.NegFRho.ZeroRhoR.ZeroPhiR.eam.alloy' awk -F. -v OFS='\n' '{print $2, $3, $4}' <<< "$str" NegFRho ZeroRhoR ZeroPhiR 的另一个较小的awk变体:

RS

答案 1 :(得分:1)

使用sed,您可以使用

$ sed 's/^[^.]*\.\([^.]*\)\.\([^.]*\)\.\([^.]*\)\..*/\1\n\2\n\3/' <<<"$str"
NegFRho
ZeroRhoR
ZeroPhiR

或者,GNU grep

$ grep -oP '\.\K[^.]+'  <<<"$str" | head -3
NegFRho
ZeroRhoR
ZeroPhiR