linux基础(三)

时间:2022-04-21
本文章向大家介绍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'