标签:长度 ade bash 搜索 正则表达式引擎 fgrep tor 大小写 ifconfig
Linux中的文本处理工具,grep、sed、awk,也称之为三剑客,熟练的使用,对文本内容搜索、编辑等任务能够提升效率。grep/egrep/fgrep:文本过滤工具;sed:流编辑器;awk:文本报告生成器 ,格式化文本,3个开发者的名字缩写,也是一门完整的编程语言。
字符匹配 | 元字符 -基本 | 元字符 -扩展 | 作用 |
---|---|---|---|
. | . | 匹配任意单个字符 | |
[ ] | [ ] | 匹配指定范围内的任意单个字符 [:digit:]、[:upper:]、[:lower:]、[:alpha:] | |
[^] | [^] | 匹配指定范围外的任意单个字符 [:alnum:]、[:punct:]、[:space:] ... | |
匹配字数 | 用在指定的字符后表示其出现次数,默认为贪婪模式 | ||
* | * | 匹配前面字符任意次:0、1、n次 | |
.* | .* | 匹配任意长度任意字符 | |
\? | ? | 匹配其前面字符0次或者1次 | |
+ | + | 匹配其前面字符至少1次 | |
{m} | {m} | 匹配其前面字符m次 | |
{m,n} | {m,n} | 匹配其前面字符至少m次,至多n次 | |
{m,} | {m,} | 匹配其前面字符至少m次 | |
位置锚定 | |||
^ | ^ | 行首锚定 | |
$ | $行尾锚定 | ||
^pattern$ | ^pattern$ | 用于pattern 来匹配整行: ^$:空白行、^[[:space:]]*$:空行或包含空白字符的行 | |
\< ,\b | \< ,\b | 词首锚定 | |
\>, \B | \>, \B | 词尾锚定 | |
\<pattern\> | \<pattern\> | 匹配完整单词 | |
分组及引用 | () | 括号内的模式匹配到的字符会被记录于正则表达式引擎的内部变量中 ,后向引用:\1, \2, ... | |
或关系 | 1 | a或者b |
比如:A|apple:表示A或者apple;(A|a)pple:表示Apple和apple
--color=auto:对匹配到的文本着色后高亮显示,默认alias;
-i:ignorecase,忽略字符大小写;
-o:仅显示匹配到的字符串本身;
-v, --invert-match:显示不能被模式匹配到的行;
-E:支持使用扩展的正则表达式元字符;
-q, --quiet, --silent:静默模式,即不输出任何信息;
-n,--number 显示行数
-r,--recursive 递归查找 grep -r money /etc 递归查找etc下的文件内包含money的文件,除了二进制文件
-w,--word根据单子精确匹配查找
[root@xt scripts]# grep -v "/bin/bash$" /etc/passwd | head -3
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
[root@xt scripts]#
找出ifconfig命令结果中的IP地址:
ifconfig | grep "inet\>" | tr -s " " | cut -d" " -f3
ifconfig eno16777736 | grep -w inet | tr -s " " | cut -d" " -f3
ifconfig eno16777736 | grep ‘inet\>‘ | sed ‘s/^.*inet[[:space:]]\?//‘ | sed ‘s/netmask.*$//‘
grep ‘inet addr‘ | sed ‘s/^.*addr://g‘ | sed ‘s/Bcast.*$//g‘
ifconfig eno16777736 | awk -F‘[ :]+‘ ‘NR==2{print $3}‘
ifconfig eno16777736 | awk ‘NR==2{print $2}‘
=====================================
添加用户bash, testbash, basher以及nologin(其shell为/sbin/nologin);而后找出/etc/passwd文件中用户名同shell名的行;
[root@xt scripts]# grep -E "^([^:]+\>).*\1$" /etc/passwd
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
sed :在使用中必须指定行号或正则表达式,sed 每次只从文件或标准输入中读取一行数据,将之拷贝到一个编辑缓冲区,然后对该行数据按指定命令进行处理,并将结果输出到屏幕(标准输出),接着读入下一行。整个文件像流水一样被逐行处理然后逐行输出;stream editor
-n:不输出模式空间中的内容至屏幕即未编辑的
-e script :多点编辑
-f script-file:从脚本文件中读取内容进行编辑,可以实现批量修改
-r, --regexp-extended:支持使用扩展正则表达式;
-i[SUFFIX], --in-place[=SUFFIX]:直接在原文编辑
eg:
1.sed -e ‘s/root/centos/‘ -e ‘s/bash/nologin/‘ /ect/passwd
2. cat >>ss <<eof
s/root/centos/p
s/bash/nologin/
#sed -f ss /etc/passwd #-n 只显示匹配的
3.在2的基础上修改为脚本
#!/bin/sed -f
..
]# ./sss /etc/passwd
编辑范围:
1.空地址:对全文进行处理;
2.单地址:
#:指定行;
/pattern/:被此模式所匹配到的每一行;
3. 地址范围
#,#:3,8 [3,8]
#,+#:
#,/pat1/
/pat1/,/pat2/
$:最后一行;
4.步进:~
1~2:所有奇数行
2~2:所有偶数行
编辑命令
- 单位
标签:长度 ade bash 搜索 正则表达式引擎 fgrep tor 大小写 ifconfig
原文地址:http://blog.51cto.com/12580678/2342451