如何从点(.)截断第二列?

如何从点(.)截断第二列?

输入:

10.175.192.16   vgxyxgf.de.foo.net  asdf    34efg
10.175.192.17   sdtds.de.foo.net    xyyxv   e5432
10.175.243.20   asdfycfb.us.foo.net dfvasf  34525

输出:

10.175.192.16   vgxyxgf
10.175.192.17   sdtds
10.175.243.20   asdfycfb

我怎样才能输出?就像“awk '{SOMEMAGIC}' foo.txt

所以我有“输入”,我需要一个 /etc/hosts 文件样式的输出...:\

答案1

只是为了好玩,这里有一个非非awk答案sed

cut -f1-4 -d. foo.txt

答案2

awk

awk '{sub(/\..*/,"",$2);$0=$1 "  "$2}1' foo.txt

sed

sed 's/^\(\([^.]*\.\)\{4\}\).*$/\1/;s/\.$//' foo.txt

答案3

另一个 awk 解决方案,类似于史蒂文的cut回答:

awk -F. -v OFS=. '{print $1, $2, $3, $4}' filename

使用点作为字段分隔符,并以点分隔打印前 4 个字段。

相关内容