假设我有一个字符串
Al99.NegFRho.ZeroRhoR.ZeroPhiR.eam.alloy
我希望在2个点之间获得3个字符串
NegFRho
ZeroRhoR
ZeroPhiR
我怎么能用sed或awk来做呢?
答案 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