linux基础2(字符管理)
grep
grep -o root passwd 匹配关键字体
grep -n root passwd 显示行数
grep -i root passwwd 忽略大小写
grep -v root passwd 查找不包含root的内容
grep -A 5 ntp passwd 显示ntp后5行
grep -B 5 ntp passwd 显示ntp前5行
grep -C 5 ntp passwd 显示ntp前后5行
grep --color=auto root passwd 字体带颜色
. *任意长度的字符
[ ] 匹配指定字符组内的任一字符
[^] 匹配不在指定字符组内的任一字符
^[ ] 匹配以指定字符组内的任一字符开头
^[^] 匹配不以指定字符组内的任一字符开头
grep -E (egrep) 扩展正则表达式
+ 匹配一个或多个前导字符
? 匹配零个或一个前导字符
a|b 匹配a或b
( ) 组字符 hello myself yourself (my|your)self
x{m} 前导字符x重复m次
[:alnum:] 字母与数字字符
[:alpha:] 字母字符(包括大小写字母)
[:blank:] 空格与制表符
[:digit:] | 数字
[:lower:] 小写字母
[:upper:] 大写字母
[:punct:] 标点符号
[:space:] 包括换行符,回车等在内的所有空白
vim /etc/bashrc 添加字符颜色
unalias grep 取消字体颜色
soure /etc/bashrc 重新加载
grep ^# linux 以#号开头的行
grep ^$ linux 空行
grep -v -e ^$ -e ^# linuxx
grep -w root linux root所在的行 并标识root
grep -v ^# linux | grep -v ^$
egrep -v '(^#|^$)' linux 不显示空行和带#号开头的行
grep "/<good" linux good所在的行(goodb可以显示)
grep "?/<good>/" linux good所在的行(goob不能显示) 例最后一个 单词为goodb
grep '/'^gmae linux 显示^game 特殊符号显示用‘/’
grep ens33$ linux 以ens33结尾的行
grep [o-z] linux 显示出带o-z字母的单词
grep ^T? linux 标出T开头的行
grep ^T+ linux 只显示T开头的行
grep '(^A|^a)' linux A a开头的行
sed
sed '1d' linux 删除第一行
sed '1,3d' linux 删除1-3行
sed '2,$d' linux 删除2到末行
sed '/link/d' llinux 删除含link的行
(加-i 彻底删除)
sed '/ens33/p' linux ens33的行 +1
sed '/^[Aa]pple/p' linux [Aa]pple开头的行 +1
sed -ne '1,2p' -e '/game/p' linux 1-2行内的含有game的行+1
sed -e '1,3d' -e 's/game/ok/p' linux 删除1-3行 含有game的行+1 并把game改为ok
sed '2,/apple/p' linux 第二到含apple开头的行+1
sed -n '/ens33/p' linux 只显示含ens33的行
sed -n 's/game/123/p' linux 只显示game的行 并把game改为123
sed -n 's/game/123/gp' linux 只显示game的行 并把game改为123(整行替换)
sed -n 's/game$/linux./p' linux 只显示game的行 以game结尾的后面加linux.
sed -n 's/game$/&.linux/p' linux 只显示game的行 在game后面加上.linux
sed 's/game$/&.linux/p' linux 显示所有行 game行+1 并在game后面加.linux
sed 's/game$/&.linux/' linux 显示所有行 并在game后面加.linux
sed '/Apple/r io' linux 把文件io的内容全部写到Apple的下一行
sed '/Apple/w io' linux 把Apple整行的内容写到io中 (覆盖)
sed '/game/a\---linux---' linux 在game的下一行插入---linux---
sed 'y/game/GAME/p' linux 把字母game改成大写GAME
awk
awk 'NR==4' linux 显示第四行
awk '/game/' linux (grep game linux)
awk /game/ linux (grep -n '/game/p' linx)
显示含有game的行
cat linux | grep -w game | awk '{print $2}' 取含有game的行的第二列
awk ''/game/{print $2}' linux
awk -F " " 'NR==5{print $2}' linux 空格为分界符 取第五行的第二列
df -h | awk '{print $2}' 取df- h的第二列
df -h | awk '{print $3,$5}' ---------3 5列
date | awk '{print "Year:" $1 "\nMonth:" $2}' Year:2018
Moth: 09
cut
cut -d " " -f 2 linux 截取第二列
cut -d " " -f 1,3 linux 截取一三列
cut -d: -f1 passwd 截取第一列d后面为分隔符
cut -d: -f1,3 passwd
cut -c1-6 passwd 前6个字符的列
cut -c6-12 passwd
cu -c6- passwd 6到最后
sort:将文件的每一行作为一个单位,从首字符向后,依次按ASCII码值进行比较
-u :去除重复行
-r :降序排列,默认是升序
-o : 将排序结果输出到文件中 类似 重定向符号>
-n :以数字排序,默认是按字符排序
-t :分隔符
-k :第N列
-b :忽略前导空格。
-R :随机排序,每次运行的结果均不同。
sort -nr -t: -k3 passwd 分隔符为:第三列 降序
sort -n linux 按1-11排序
sort -n -r linux 按11-1排序
sort -k 2 linux 第二列按a-z排序
sort -k 2 -r linux 第二列按z-a排序
sort u config 删除重复行
sort -nu 1.txt -o 2.txt 重定向
tee工具
tee工具从标准输入读取并写入标准输出和文件,即:双向覆盖重定向<屏幕输出|文本输入>
-a 双向追加重定向
echo hello | tee 1.txt
echo world | tee -a 1.txt 追加
paste工具
paste工具用于合并文件行
-d:自定义间隔符,默认是tab
-s:串行处理,非并行
paste 1.txt 2.txt 合并
paste -d@ 1.txt 2.txt 文件间的分隔符为@
paste -s 1.txt 2.txt 串行处理
wc
wc -l /etc/passwd 行数
wc -w /etc/passwd 字数(单词数)
wc -c /etc/passwd 字节数
wc -lwc /etc/passwd /etc/fstab 行数字数字节数总量
find
find / -name config 查找指定文件config的路径
find / -name config* 查找所有带config单词的路径
find /etc -name ifcfg* 查找etc下所有带ifcfg单词的路径
find / -type
b -块设备
d -目录
c -字符设备文件
p -管道文件
l -符号链接文件
f -普通文件