linux基础(三)
一、文本处理工具
1、文本查看工具less和cat
cat -E filename 能看到行的结束符
-A filename 能看到tab键 回车 (hexdump -C win.txt)
-n filename 加行号
-s filename 压缩空行(连续相邻的空行)'
-b 加行号,但空行不加cat > f3 给文件写入内容(nl==cat -b )
2、more(分页查看文件)
3、less(支持搜索man的用法来自less)
4、head(查看文件首部,默认10行)
head -n 4
-c n 查看前n个字符
cat /dev/random strings(提取二进制程序的课间字符)
openssl
5、tail(查看文件尾部)
tail -f f1 实时跟踪文件
whath -n1 tail f1 & --> jobs查看后台执行程序 fg
6、cut命令(提取列)
-d 指定分隔符
-f 指定列 -f 1,3
-output-delimiter="+" 输出分隔符为+
-c 按字符切割
7、paste命令(合并)
合并两个文件同一行放在一块
paste f1 f2 > f3 (横向合并 各自第一行放在同一行)
cat f1 f2 > f4 (纵向合并)
-d 指定分割符
-s 所有行横着显示
8、wc(文本统计)
-l 行数
-w 单词
-c 字节
-m 字符
/usr/share/dict/linux.words
多少用户登录:who wc -l
9、sort(排序)
-n 按数字排序
-r 倒叙
-k 指定列 sort -rn -k 3
-t 指定分割符
-u 删除重复的行'
10、uniq(压缩重复相邻的行)
-c 统计重复的行数'
-d 只显示重复过的行
-
netstat -nt tr -s " " ":" cut -d: -f6 sort uniq -c
netstat -nt rev tr -s " " : cut -d: -f 4 rev sort uniq -c sort
让网站访问某主机网页1000次
ab -c 1000 -n 10000 http://192.168.25.128/index.html
11、rev
12、diff(判断两个文件的不同)
diff a.bak b.bak
-u : 显示详细信息 diff a.bak b.bak -u > diff.log
-b : 选项来自备份该表了的文件
patch -b acl.bak diff.log (还原文件)
13、grep(行提取工具)
-v 显示不被匹配的行
-i 忽略大小写
-n 显示匹配行号
-c 统计匹配的行数
-o 仅显示匹配到的字符串
-q 静默模式,不输出任何信息
-A # 后#行 包含当前行后续的的三行
-B # 前#行
-C # 前后各#行
-e 实现多个选项间的逻辑or关系
grep -e 'cat' -e 'dog' file
-w 整行匹配整个单词
-E 使用ERE 扩展正则表达式
-F 相当于fgrep。不支持正则表达式
nmap 网络扫描器
nmap -sP -v 172.18.254.0/24 grep -B1 up grep -v up
namp -v -A 172.18.254.88
二、正则表达式
分类: 基本正则表达式BRE
扩展正则表达式ERE grep -E , egrep
引擎:采用不同算法,检查处理正则表达式的软件模块
元字符:字符匹配、匹配次数、位置锚定、分组
看帮助:man 7 regex
1、基础正则表达式
字符匹配:
.匹配任意单个字符
[] 匹配指定范围内的任意单个字符
[^] 匹配指定范围外的任意单个字符
[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,a-z A-Z
[:lower:] 小写字母 [:upper:] 大写字母
[:space:] 水平和垂直的空白字符
[:blank:] 空白字符
[:cntrl:] 不可打印的控制字符(退格、删除、警铃)
[:digit:] 十进制数字 [:xdigit:]
[:graph:] 可打印的非空白字符
[:print:] 可打印的非空白字符
[:punct:] 标点符号
注意:grep 'a\b' f1 搜索ab 内容
grep "a.b" f1 搜索a.b 内容
匹配次数
* 匹配前面的字符任意次,包括0次;贪婪匹配模式
.* 任意长度的任意字符
? 匹配其前面的字符0次或1次
+ 匹配前面的字符至少一次
匹配前面的字符n次
匹配前面的字符至少m次,至多n次
{,n} 匹配前面的字符至多n次
匹配前面的字符至少n次
位置锚定
^ 锚定行首
$锚定行尾
^PATTERN$用于模式匹配整行
^$空行
^[[:space:]]*$ 空白行
< 或 b 词首锚定,用于单词模式左侧(单词边界,除了字母、下划线、数字)
> 或 /b 词尾锚定,用于单词模式右侧
匹配整个单词
() 分组,将一个或多个字符捆绑在一起,当做一个整体处理
echo godgodgod grep -o "(god)" 重复god2次
1 表示从左侧起第一个左括号以及与之匹配右括号之间的模式所匹配的字符
2 ...
反向引用:应用前面的分组括号中的模式所匹配的字符,而非字符本身
或者
ab : a或b
Ccat : C或cat
(Cc)at :Cat或cat
2、扩展正则表达式
egrep = grep -E
次数匹配
*匹配前面字符任意次
? 0次或1次
+ 1次或多次
匹配m次
至少m,至多n次
位置锚定
^ 行首
$ 行尾
< , b 词首
> , b 词尾
分组
()
后向引用:1 2 ...
或者
ab : a或b
Ccat : C或cat
(Cc)at :Cat或cat
sed
取ip地址
centos 7:
ifconfig ens33 sed '2!d;s/.*et //;s/ .*$//'
取目录名:
echo "/etc/rc.d/" sed -r 's@^(.*/)([^/]+/?)@1@g'
取基名:
echo "/etc/rc.d/" sed -r 's@^(.*/)([^/]+/?)@2@g'
- Python 3.6实现单博主微博文本、图片及热评爬取
- 用Django实现一个可运行的区块链应用
- Python的dict实现原理及与Java的比较探究
- 关于位域如何节省内存(C++)
- mysql的小知识点(关于数据库的导入导出 对于windows)
- Python网络编程中的套接字名和DNS解析
- hdu 4009 Transfer water(最小型树图)
- NumPy二元运算的broadcasting机制
- md5算法原理一窥(其一)
- 实现属于自己的TensorFlow(一) - 计算图与前向传播
- 基于Sanic的微服务基础架构
- hdu 3038 How Many Answers Are Wrong ( 带 权 并 查 集 )
- Java 基础知识点(必知必会其二)
- Java 基础知识点(必知必会其一)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法