Linux中使用awk输出一段字符中指定的内容

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux中使用awk输出一段字符中指定的内容相关的知识,希望对你有一定的参考价值。

这段字符如下:

2: eth0:mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether fa:16:3e:85:5a:08 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.18/24 brd 192.168.0.255 scope global dynamic eth0
valid_lft 83317sec preferred_lft 83317sec
inet6 fe80::f816:3eff:fe85:5a08/64 scope link
valid_lft forever preferred_lft forever

要得到第三行的192.168.0.18,我现在只能用awk 'NR==3 print $2'得到192.168.0.18/24,药怎么写awk的命令能够得到不要/24的地址。如果有其他办法也可以,不拘泥于awk命令。

参考技术A root@ubuntu:~# cat 1
2: eth0:mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether fa:16:3e:85:5a:08 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.18/24 brd 192.168.0.255 scope global dynamic eth0
valid_lft 83317sec preferred_lft 83317sec
inet6 fe80::f816:3eff:fe85:5a08/64 scope link
valid_lft forever preferred_lft forever
root@ubuntu:~# cat 1|awk -F"[ /]+" '/inet /print $3'
192.168.0.18本回答被提问者和网友采纳

如何用shell提取文件中指定的字符串

cut命令

用法: cut 参数 文件名
说明:cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段写至标准输出。
参数:
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
-c :以字符为单位进行分割。
-d :自定义分隔符,默认为制表符。
-f :与-d一起使用,指定显示哪个区域。
-n :取消分割多字节字符。仅和 -b 标志一起使用。如果字符的最后一个字节落在由 -b 标志的 List 参数指示的
更多参数请参考:cut - -help
-b用法:
以字节为单位,指定相应的字节输出,由于一个英文字符只占用一个字节,所以对英文字符可以与-c等价,但是占用多个节编码的字符不适用,比如中文;
文件内容:

$ cat test.txt
1234567890
ABCDEFGHIJ
abcdefghij
hello wrold!

指定文件中每行的第1,3到7个字符输出:

cut -b 1,3-7 test.txt
134567
ACDEFG
acdefg
hllo w

-n表示1到前n个字符,n-表示从n开始的所有字符
打印前两个字符和从第8个开始的字符

$ cut -b -2,8- test.txt
12890
ABHIJ
abhij
herold!

中文:
文件内容:

$ cat test1.txt
我们好像在哪见过
你记得吗?
好像那是一个春天!
参考技术A 通过grep或者awk或者sed等命令工具

以上是关于Linux中使用awk输出一段字符中指定的内容的主要内容,如果未能解决你的问题,请参考以下文章

如何用shell提取文件中指定的字符串

替换字符串中指定的特殊字符

替换字符串中指定的特殊字符

Linux怎么查看文本中指定行的内容

如何用shell提取文件中指定的字符串

linux下如何将第一行中指定的字符全部替换掉