【linux】文字提取
提取IP地址:
方法①:
ifconfig eth3|grep Bcast|cut -d ":" -f2|cut -d " " -f1
ifconfig: 显示或配置网络设备的命令 后面跟的是设备名。
ifconfig eth3 的显示如下:

grep: 后面接正则表达式,显示正则表达式出现的行
ifconfig eth3|grep Bcast的显示为:

cut: -d 后面接分割符 -f后面的数字表示要获取分割后的第几个数据
ifconfig eth3|grep Bcast|cut -d ":" -f2 后显示为:

ifconfig eth3|grep Bcast|cut -d ":" -f2|cut -d " " -f1 后就获取了ip地址

awk小例子
来自http://www.cnblogs.com/xupeizhi/archive/2012/07/23/2605371.html
①输出文件中包含符合某正则表达式的行
awk '/111*/' text 输出text文件中包含符合111* 字段的行

②输出文件中每行的第n个字段
awk '{print $1}' text 输出text文件中每行的第一个字段 $0表示全部
awk '{print $1,$3}' text 输出text文件中每行的第一和第三个字段 空格分隔
awk '/111*/{print $1,$3}' text 输出text文件中有符合111*字段行的第一和第三个字段
tr:
来自http://blog.sina.com.cn/s/blog_58c3f7960100uttl.html
tr -c -d -s ["string1_to_translate_from"] ["string2_to_translate_to"] < input-file
这里:
-c 用字符串1中字符集的补集替换此字符集,要求字符集为ASCII。
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
input-file是转换文件名。虽然可以使用其他格式输入,但这种格式最常用。
例子
1、
# cat file | tr [a-z] [A-Z] > new_file
# cat file | tr [A-Z] [a-z] > new_file
或者
# cat file | tr -s "\r" "\n" > new_file
sort:
来自http://www.cnblogs.com/dong008259/archive/2011/12/08/2281214.html
sort命令是帮我们依据不同的数据类型进行排序,其语法及常用参数格式:
sort [-bcfMnrtk][源文件][-o 输出文件]
补充说明:sort可针对文本文件的内容,以行为单位来排序。
参 数:
-b 忽略每行前面开始出的空格字符。
-c 检查文件是否已经按照顺序排序。
-f 排序时,忽略大小写字母。
-M 将前面3个字母依照月份的缩写进行排序。
-n 依照数值的大小排序。
-o<输出文件> 将排序后的结果存入指定的文件。
-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 选择以哪个区间进行排序。
uniq:
来自:http://blog.csdn.net/jesseen/article/details/8005056

综合应用:
Write a bash script to calculate the frequency of each word in a text file words.txt.
For simplicity sake, you may assume:
words.txtcontains only lowercase characters and space' 'characters.- Each word must consist of lowercase characters only.
- Words are separated by one or more whitespace characters.
For example, assume that words.txt has the following content:
the day is sunny the the
the sunny is is
Your script should output the following, sorted by descending frequency:
the 4
is 3
sunny 2
day 1
方法一:
解答:为了方便使用sort函数,首先要把每个字符串单独放在一行 要用tr, 然后用sort排序,用uniq统计每个单词的数量,再用sort按照数量排序,最后用awk按格式输出。
cat words.txt | tr -s ' ' '\n'|sort|uniq -c|sort -nr|awk '{print $2,$1}'
方法二:只用awk
awk '\
{ for (i=1; i<=NF; i++) { ++D[$i]; } }\
END { for (i in D) { print i, D[i] } }\
' words.txt | sort -nr -k 2
awk原理:来自http://www.cnblogs.com/xupeizhi/archive/2012/07/23/2605371.html
1):awk使用一行作为输入,并将这一行赋给内部变量$0,默认时每一行也可以称为一个记录,以换行符结束。
2):然后,行被空格分解成字段,每一个字段存储在已编号的变量中,从$1开始,可以多达100个字段。
3):awk如何知道空格是用来分隔字段的呢?因为有另一个内部变量FS用来确定字段的分隔符。初始时,FS被赋为空格——包含制表符和空格符。如果需要使用其他的字符分隔符,如冒号或破折号,则需要将FS变量的值设为新的字段分隔符。
4):awk打印字段时,将以下面的方式使用print函数:{print $1,$3};逗号比较特殊,它映射为另一个内部变量,称为输出字段分隔符OFS,OFS默认为空格。逗号被OFS变量中存储的字符替换。
5):awk输出之后,将从文件中获取另一行,并将其存储到$0中,覆盖原来的内容,然后将新的字符串分隔成字段并进行处理。这个过程将持续到整个文件的所有行都处理完毕。
转义序列:转义序列用一个反斜杠后跟一个字母或数字来表示。它们可以用在字符串中,代表制表符,换行符,换页符等。
5:awk '/zhangfei/{print "\t\twu hu shangjiang:" $1,$2 "!"}'
wu hu shangjiang:zhangfei xiuhua!
\t:制表符,tab键
6.打印数字时,可能需要控制数字的格式。这可以通过printf函数来实现,但是,通过设置一个特殊的awk变量OFMT,使用print函数时也可以控制数字的打印格式。OFMT的默认值时“%.6gd",表示只打印小数部分的前六位。
awk 'BEGIN{OFMT="%.2f";print 1.23456789,12E-2}'
1.23 0.12
如果设置了变量OFMT,在打印浮点数时,就只打印小数部分的前两位。百分号表示接下来要定义格式。
BEGIN:必须大写
7:
1):[root@localhost tmp]# echo "UNIX" | awk '{printf "|%-15s|\n",$1}'
|UNIX |
2):[root@localhost tmp]# echo "UNIX" | awk '{printf "|%15s|\n",$1}'
| UNIX|
1): 对于echo命令的输出,unix是经管道发给awk。printf函数包含一份控制串。百分号让printf做好准备,它要打印一个占15非格,向左对 齐的字符串,这个字符串夹在两个竖杠之间,并且以换行符结尾。百分号后的短划线表示左对齐。控制穿后面跟了一个逗号和$1。printf将根据控制串中的 格式说明来格式化字符串unix。
2):字符串unix被打印成一个占15格,向右对齐的字符串,夹在两个竖杠之间,以换行符结尾。
8.[root@localhost tmp]# awk '{printf "The name is: %-15s ID is: %-15d Money is: %-15d\n",$1,$2,$3}' liuguanzhang
The name is: liubei ID is: 1 Money is: 10000
The name is: guanyu ID is: 2 Money is: 2000
The name is: zhangfei ID is: 3 Money is: 1000
9.[root@localhost tmp]# awk '{printf "|%-15s| %-15s| %-15s\n",$1,$2,$3}' liuguanzhang
|liubei | 1 | 10000
|guanyu | 2 | 2000
|zhangfei | 3 | 1000
10:root@localhost tmp]# awk '{max=($1>$2)?$1:$2;print max}' filename
如果记录的第一个字段的值大于第二个字段的值,则把问号后面那个表达式的值赋给max,否则就将冒号后面的那个表单时的赋给max。
11:awk -F: 'NF != 7{printf("line %d,does not have 7 fields: %s\n",NR,$0)} $1 !~/[A-Za-z0-9]/{printf("line %d,nonalphanunmeric user id: %s\n",NR,$0)} $2=="*"{printf("line %d,no password:%s\n",NR,$0)}' passwd
awk的字段分隔 符是冒号;如果字段数(NF)不等于7,则执行接下来的操作块;printf函数打印字符串“line<行号>,does not have 7 fields:”,后面跟上当前记录的记录号(NR)和记录本身($0);如果第一个字段($1)中不含任何字母和数字字符,printf函数就打印字符 串“nonalphanumberic user id:”,后面跟上当前记录的记录号和内容;如果第二个字段是一个星号,就打印字符串“no passwd:",后面跟上记录号和记录本身.
12:awk -F: '/Nancy McNeil/{$1="Louise Mclnnes";print $0}' test
【linux】文字提取的更多相关文章
- [Linux] 如何在 Linux 中提取随机数
如何在 Linux 中提取随机数 一.设备文件 /dev/random & /dev/urandom 字符特殊文件 /dev/random 和 /dev/urandom (存在于Linux 1 ...
- Linux文字分段裁剪命令cut(转)
Linux cut命令用于显示每行从开头算起num1到num2的文字. 语法 cut [-bn] [file] cut [-c] [file] cut [-df] [file] 使用说明: cut命令 ...
- php抓取图片进行内容提取解析,文字性pdf进行内容文字提取解析
2018年7月7日18:52:17 php是用纯算法,自己是提取图片内容不是不行,可以但是优化起来很麻烦还得设计学习库,去矫正数据的正确率 对于大多数项目来说,如果不是做ocr服务,就不必要做需求工具 ...
- Linux shell 提取文件名和目录名的一些方法(转)
很多时候在使用Linux的shell时,我们都需要对文件名或目录名进行处理,通常的操作是由路径中提取出文件名,从路径中提取出目录名,提取文件后缀名等等.例如,从路径/dir1/dir2/file.tx ...
- python实现图片文字提取,准确率高达99%,强无敌!!!
上次我使用的百度AI开放平台的API接口实现图片的转化,后来有许多小伙伴都私信问我,怎么获取百度AI平台的AK和SK.为了统一回答大家的问题,今天我又使用百度API实现了一个从图片中提取文字和识别身份 ...
- Linux shell 提取文件名和目录名
${}用于字符串的读取,提取和替换功能,可以使用${} 提取字符串 1.提取文件名 [root@localhost log]# var=/dir1/dir2/file.txt [root@localh ...
- 基于tess4j的图片文字提取
1.文件结构目录 2.具体实现 ①添加maven依赖 <dependency> <groupId>net.sourceforge.tess4j</groupId> ...
- Linux下提取IP至文件
ifconfig | grep 'inet[^6]' | sed 's/^\s*//g' | cut -d ' ' -f2 > ips.txt 排除127开头的IP: ifconfig | gr ...
- hanlp中文智能分词自动识别文字提取实例
需求:客户给销售员自己的个人信息,销售帮助客户下单,此过程需要销售人员手动复制粘贴收获地址,电话,姓名等等,一个智能的分词系统可以让销售人员一键识别以上各种信息 经过调研,找到了一下开源项目 1.wo ...
随机推荐
- 【原创】StickHeaderListView的简单实现,解决footerView问题
1.前言: 前几天用了GitHub上se.emilsjolander.stickylistheaders这个组件,然后发现这个组件的listview不能添加footerView,加了footer后,滑 ...
- Collection中的排序
我们来了解一下Collection的框架与接口: Set接口下面已经有SortedSet接口,其中提供了很多自带排序的实现类,例如ThreeSet,用户还能够自定义比较器来规定自己的排序规则. 本篇着 ...
- Power of Four
Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example:Giv ...
- kettle日志记录
环境描述: 现在一个项目有很多个作业,需要知道每次跑批后哪些ktr跑成功,哪些失败了 问题解决: 下面是一个具体的操作流程 首先建立数据库表 CREATE TABLE test_1(id INT,NA ...
- uninstall 11.2.0.3.0 grid & database in linux 5.7
OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - ...
- Redis 四:存储类型之有序集合
有序集合似乎更大的操作是由于加了一个叫做“分子”的东西 事实上就好像普通的数据,只是为这个数据加了一个纯数字的标识, 通过操作这些标识来得到我们想要的数据! 分子可以是整形,也可以是双精度浮点型: = ...
- 6.24AppCan移动开发者大会价值30万的展示机会归了谁?
最近,小编的邮箱都被挤爆了! 来自开发者的邮件一封封涌进邮箱,VIP展位申请,TOP30 APP评选,感谢大家的积极参与,展位有限,APP名额有限,开发者的热情无限. 经过谨慎筛选.综合评定后,以下5 ...
- Android-----第三方 ImageLoader 的简单配置和使用
ImageLoader 的简单使用配置,最好是将配置信息放到application里面,这样我们就不需要每次使用都需要配置了 1.首先我们得有一个包 2.简单的配置信息 //显示图片的配置 Displ ...
- Android中如何获取应用版本号
- Android程序完全退出的三种方法
很多网友可能发现自己的Android程序有很多Activity,比如说主窗口A,调用了子窗口B,在B中如何关闭整个Android应用程序呢? 这里Android123给大家三种比较简单的方法实现. 首 ...