Linux 如何从ip中提取前2个数字

Linux 如何从ip中提取前2个数字,linux,awk,sed,Linux,Awk,Sed,我有以下案文: 1.1.1.1 12.123.1.1 123.123.1.1 213.12.123.1 34.12.123 1.123.4.1 我如何将其提取为: 1.1 12.123 123.123 213.12 34.12 1.123 如果数据位于文件文本,请执行以下操作: cut -d'.' -f1,2 <text cut-d'.-f1,2使用awk可以很容易地使用字段分隔符。(例如awk-F.)并打印由分隔的前两个字段。可以通过printf或通过设置OFS=.来完成,例如:

我有以下案文:

1.1.1.1
12.123.1.1
123.123.1.1
213.12.123.1
34.12.123
1.123.4.1
我如何将其提取为:

1.1
12.123
123.123
213.12
34.12
1.123

如果数据位于文件
文本
,请执行以下操作:

cut -d'.' -f1,2 <text

cut-d'.-f1,2使用
awk
可以很容易地使用字段分隔符
(例如
awk-F.
)并打印由
分隔的前两个字段。
可以通过
printf
或通过设置
OFS=.
来完成,例如:

awk -F. '{printf "%d.%d\n", $1, $2}' file

示例使用/输出

文件中输入,例如

$ awk -F. -v OFS=. '{print $1, $2}' file
1.1
12.123
123.123
213.12
34.12
1.123
使用
sed

您可以使用
sed
轻松处理此问题,例如:

$ sed -r 's/([0-9]+[.][0-9]+).*$/\1/' file
1.1
12.123
123.123
213.12
34.12
1.123
在这里,只需使用扩展正则表达式,即可捕获第一组数字(八位字节)点和第二个八位字节,然后重新插入该信息作为反向引用

如果由于某种原因限制使用基本正则表达式,则可以使用:

sed 's/\([0-9][0-9]*[.][0-9][0-9]*\).*$/\1/' file

同样的结果。仔细检查一下,如果您还有其他问题,请告诉我。

Short
awk
,如果所有行的格式都相同,那么它就可以工作

awk -F. '$0=$1FS$2' file
1.1
12.123
123.123
213.12
34.12
1.123

到目前为止,您的代码在哪里?你试过什么?
awk -F. '$0=$1FS$2' file
1.1
12.123
123.123
213.12
34.12
1.123