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
同样的结果。仔细检查一下,如果您还有其他问题,请告诉我。Shortawk
,如果所有行的格式都相同,那么它就可以工作
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