grep
grep --color=auto 'ec' zss
#查找关键字 并以颜色凸显
-n 关键字行号
-i 忽略大小写
^ 以什么开头
$ 以什么结尾
-v 取反
-B 3 前三行
-A 3 后三行
-C 3 前后三行
-w 以单词搜索 精确搜索
-o 打印关键字
cut 列截取工具
cut -d: -f1,7 passwd
以:为分隔符 显示第一列和第七列
cut -c 1-5 passwd
截取1到5
cut -c 7- passwd
截取7到结束
cat zss | tail -1
查看最后一行
sort 排序
sort -n -t: -k3 1.txt
以:为分隔符 第三列数据 按照升序排序
sort -nr -t: -k3 1.txt
以:为分隔符 第三列数据 按照降序排序
-u 去重
-t 分隔符
-k 第N列
-o 将结果输出到文件中 类似于重定向
-R 随机排序 每次结果都不一样
uniq 只用于去除连续的重复行
i 忽略大小写
-c 统计重复行次数
-d 只显示重复行
tee 从标准输入读取并写入到标准输出和文件
a 追加
grep -v '^#' vsftpd.conf | grep -v '^$'| tee vsftp.conf.bak
去除以#开头的 去除空行 显示并输入到文件
diff 用于逐行比较文件的不同
怎么样改变第一个文件 会与第二个文件一样
-b 不检查空格
-B 不检查空白行
-i 不检查大小写
-w 忽略所有的空格
这个命令看起来好麻烦
diff 也可以用于比较2个文件夹里的内容
如果只是文件夹不比较里面的文件内容
diff -q zss zss1
有时候需要以一个文件为标准,去修改其他文件,而且位置较多,通过打补丁的方式
diff -u file1 file2 > file.patch
合并模式 查不同 将不同的地方输出
patch file1 file.patch
用打补丁的方式将不同的地方打补丁打上
diff file1 file2
比较不同 这次就是相同的了
这就很厉害了
paste 合并文件内容
合并2个文件
-d 自定义分隔符
-S 串行输出
cat file1 file2
这还从没用过 看2个文件
tr 字符转换 替换 删除
commands | tr 'a' 'b'
命令结果交给tr处理 搜索a 替换b
tr 'a' 'b' < filename
搜索a 替换b 内容来自于filename
tr options 'a' < filename
删除包含a的内容
常用匹配字符串
a-z 匹配所有小写字母
A-Z 匹配所有大写字母
0-9 匹配所有数字
[a-zA-Z0-9] 匹配所有字母数字
tr ':/' '#' < 1.txt
把:/都替换为# 一对一替换 不会多对一
tr -d 'a-z' < 1.txt
删除所有的小写字母
tr -s 'a-z' < 1.txt
压缩 连续的字母 或者连续的别的东西
ifconfig enp26s0f3 | grep netmask | tr -s ' '|cut -d " " -f3
用tr压缩空格 用cut截取第3行
ctrl c 终止前台运行程序
^z 将前台的程序挂到后台
^d 退出 等价exit
^l 清屏
^a 光标移动到命令行最前端
^e 光标移动到命令行的后端
^u 删除光标前所有的字符
^k 删除光标后所有字符
^r 搜索历史命令 输入关键字
touch file{1..13}.jpg
* 匹配0或多个任意字符
?匹配任意单个字符
[list] 匹配里面的单个字符 或 一组单个字符
[0-9] 0-9
[0-9,10,11] 0-9 1 0 1 1 而不是10 11
[9-2,10] 9-2不匹配 只能从小到大 只有 1 0
[!list] 匹配除了里面的单个字符
{string1,string2,…} 匹配多个字符串
ll file{{0..9},12} 匹配0-9,12
bash中的引号
双引号"" 会把引号的内容当作整体来看待 允许通过$符号引用其他变量值
单引号'' 会把引号的内容当作整体来看待 禁止引用其他变量值 shell中的特殊符号都被视作普通字符
反撇号`` 和$()一样 引号或括号里的命令会优先执行 如果存在嵌套 反撇号不能用
单引号 会直接输出引号内的内容 而双引号 里面有命令会先执行