如何删除尾随字符串

时间:2015-08-08 14:16:42

标签: regex bash cut

给定IP地址 192.168.10.21.somebody.com.br 我需要提取 192.168.10.21 我在下面尝试了CUT,它给出了" cut:无效字节或字段列表"。

  

cut -d'。' -f-4

2 个答案:

答案 0 :(得分:4)

$ echo "192.168.10.21.somebody.com.br" | cut -d'.' -f -4
192.168.10.21

适合我!

答案 1 :(得分:4)

以下所有三个假设您将域名存储在参数

dom_name=192.168.10.21.somebody.com.br

比使用cut更有效率,假设要移除的第一个标签并不以数字开头:

echo "${dom_name%%.[[:alpha:]]*}"

如果第一个标签可以以数字开头,那么它们仍然比cut更有效,但更难以输入:

# Match one more dot than necessary to shorten the regular expression;
# then trim that dot when echoing
[[ $dn =~ (([0-9]+\.){4}) ]]
echo "${BASH_REMATCH[1]%.}"

# Split the string into an array, then output the
# first four fields rejoined by dots.
IFS=. read -a labels <<< "$dom_name"
(IFS=.; echo "${labels[*]:0:4}")