HTTP
一个简单的网页文件
service iptables stop
echo “<h1>I LOVE YOU</h1>” > /var/www/html/index.html
文本排序sort
sort 1.txt 排序规则先数字后字母,小写字母在前。
sort -t “:” -k3 /etc/passwd 用用户的UID排序,按字符大小。(等于tr -d f)
sort -t “:” -k3 -n /etc/passwd 数字排序 uniq -c 缩减重复的行并进行统计
cut -d: -f3 /etc/passwd | sort -nr > uid.txt 将用户的uid截取出来并排序(数字排序,倒序)
R 随机排序
sort -u f1 去掉重复的行
例子:
sort -t ” ” -k 1 access_log |cut -d ” ” -f1 |uniq -c |sort -nr 统计访问量并排序
last | sort | cut -d ” ” -f1 |uniq -c 统计用户登陆次数
uniq 命令 选项-c 显示每行重复次数
-d 仅显示重复过的行
-u 仅显示不重复的行
LINUX文本处理 (grep,sed,awk)文本处理三剑客
grep 文本处理
例子:
df -h | grep “/dev/sd” | tr -s ” ” “%” | cut -d% -f5 过滤硬盘/dev/sd*这些设备使用率
小技巧:nmap -v 172.168.102.0/24 扫描这个网段的活跃IP
grep -e root -e zm /etc/passwd 过滤/etc/passwd中包含root和zm的行(-e同时执行)
正则表达式
* 匹配前面字符任意次,包括0次。贪婪模式,尽可能多的或长的匹配。
.* 任意长度的任意字符
\? 匹配其前面的字符0次或者1次
\+ 匹配前面的字符至少一次
\{n\} 匹配前面的字符n次 注:\取消特殊含义
\{m,n\} 匹配前面的字符至少m次,最多n次
\{,n\} 匹配前面的字符最多n次
\{n,\} 匹配前面的字符至少n次
例子:
将ifconfig这条命令中输出的所有ip过滤出来
ifconfig | grep -o “[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}”
位置锚定:定位出现的位置
^ 行首锚定,用于该模式的最左侧
$ 行尾锚定,用于该模式的最右侧
^PATTERN$ 用于模式的匹配整行
^$ 空行
^[[:space:]]*$ 空白行
\<或\b词首锚定,用于单词模式的左侧
\>或\b 词尾锚定,用于单词模式的右侧
\<PATTERN>\ 匹配整个单词
例子:
cat /etc/fstab | grep -v “^#” | grep -v “^$” 过滤掉/fstab以#浩开头的行和空行
grep ‘^[[:space:]]\+linux16’ /boot/grub2/grub.cfg | grep -v rescue 过滤出更改网卡名的行
分组处理
分组:将一个或者多个字符绑定在一起,当作一个整体来处理:\(root\)\+
例:\(string1\+\(string2\)*\)
egrep扩展的正则表达式
字符匹配: . 任意单个字符 [] 指定范围的字符 [^]不在范围内的字符
或者:a|b a或者b
C|cat C或者cat
(C|c)at Cat或者cat
例子:
ifconfig | grep -oE “([0-9]{1,3}\.){3}[0-9]{1,3}” 用扩展正则表达式取ip
ls *.rpm |rev | cut -d. -f2|rev|sort |uniq -c 统计出光盘镜像中各种类型的安装包
ls *.rpm | grep -o “\.\b[0-9a-z_]*\>\.rpm” | sort |uniq -c 用正则表达式写出统计光盘
VIM
字符编辑: x:删除当前光标的字符 #x:del光标起始后的字符
xp:交换光标所在处的字符及其后面字符的位置
~:转换大小写 j:删除光标当前行后的换行符
替换命令: r:替换光标所在处字符
R:切换成replace模式
可视化模块:ctrl+v 面向块
多文件分割:vim -o|-O file1 file2
-o:水平分割
-O:垂直分割
单文件窗口分割:ctrl+w,s:split,水平分割
ctrl+w,v: 垂直分割
Ctrl+w,q :取消相邻窗口
ctrl+w,o:取消全部窗口
命令模式:wqall 退出
sed处理文本的工具
Sed 选项 文件
-n :不输出模式空间内容到屏幕,即不自动打印
-e :多点编辑
-f :/PATH/SCRIPI_FILE:从指定文件中读取编辑脚本
-r :支持使用扩展正则表达式
-i.bak :备份文件并原处编辑
script: ‘地址命令’ 不给地址对全文处理
单地址:#:指定的行,$:最后一行 /pattern/:被模式所能匹配到的每一行
地址范围:#,# 从第几行到第几行
#,+# 从第几行加若干行之后
/pat1/,/pat2/ 从一个模式找到下一个模式
#,/pat1/ 从第几行到下一个模式
~:步进
1~2奇数行
2~2偶数行
例子:
ifconfig |sed -n ‘2p’ 打印出有本机ip的行
sed -n ‘/^[^#]/p’ /etc/fstab 打印出该文件中非#开头的行
sed ‘/^#/d’ f1 删除该文件中以#号开头的行
编辑命令:
d:删除模式空间中匹配的行
P:打印当前模式空间中的内容
a[\]text:在指定的行后面追加文本,支持使用\n实现多行追加
I[\]text:在行前面插入文本
C[\]text:替换行为单行或者多行文本
w/path/somefile:保持模式匹配的行到指定文件
r/path/somefile:读取指定文件的文本至模式空间中匹配到行后
=:为模式空间中的行打印行号
!:模式空间中匹配行进行取反处理
例子:
cat f1 |sed ‘5a1234567\n7654321’ 在该文件中的第五行后追加
cat f1 |sed ‘5,10a1234567\n7654321’ 在该文件的5到10行后分别追加
cat f1 |sed ‘5a\ 1234567\n7654321’ 在该文件的5行加空格
cat f1 |sed ‘5\c7654321’ 替换该文件的5行
sed ‘=’ f1 给该文件的输出打行号
cat f1 |sed ’10!d’ 除了10行全部删除
sed工具:
s///:查找替换,支持使用其他分隔符,s@@@,s###
替换标记:g 行内全局替换
P 显示替换成功的行
w /PATH/TO/SOMEFILE:将替换成功的行保存至文件中
例子:
sed ‘s@UUID@DSB@’ f1 将文件中的UUID替换成DSB
sed ‘s/quiet/& net.ifnames=0/’ /etc/default/grub 在文件中的quiet后面加上net.ifnames=0
sed ‘/GRUB_CMDLINE_LINUX/s/”$/ net.ifnames=0 &/’ /etc/default/grub
在文件中以GRUB_CMDLINE_LINUX开头的行最后一个“前面加上net.ifnames=0
ifconfig | sed -n ‘2p’| sed ‘s/^.*net //’| sed ‘s/net.*//’ 过滤出ip地址
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92330