@helen-
2019-03-20T07:22:58.000000Z
字数 1858
阅读 749
研究生学习 Linux基础
echo $ {A#*//}# 从左往右找到第一个// 删除它前面的所有内容
## 双井号 从左往右找到最后一个// 删除它前面的内容
%//* 从左往右找到第一个// 删除它后面的内容
# 删前 % 删后
echo ${VAR/hello/hi}#替换第一个hello为hiecho ${VAR//hello/hi}#替换所有的hello为hi
echo ${#VAR[@]} #数组长度echo ${#var} #变量长度
-c # 统计文件字节数-m # 统计字符数-l # 统计多少行-L # 统计字符串长度-w # 统计字数 单词 按照空格分割* #行数 单词数 字节数
-f #忽略大小写-M #根据月份比较-h #根据文件大小-g #按数值排序-n #根据字符串数值比较-r # 倒序排序-k 位置1,位置2 #按照从第1个位置到第二个位置排序 (和t搭配)-t 紧跟分隔符内容 #指定分隔符-u #去重-o #结果写入文件sort -t: -k2,2 -k3r sort.txt# 按照冒号:分割,第二个字段升序,第三个字段降序 排列sort.txt内容sort -t: -k2,2 -u sort.txt# 以冒号分割,按照第二个字段去重
统计相邻两行是否重复 去掉
# 正确做法 先排序 再去重sort uniq.txt | uniqsort uniq.txt | uniq -c#统计出现次数 1:不重复 大于1重复sort uniq.txt | uniq -u#打印不重复的sort uniq.txt | uniq -d#打印重复的
交并集
交集:cat b.txt a.txt | sort | uniq -d并集:cat b.txt a.txt | sort | uniq差集:A-B (强行让B中的数据出现2次)cat b.txt b.txt a.txt | sort |uniq -u
cut可以从一个文本文件或文本流中提取文本列
cut -d: -f1-3 sort.txt#以冒号分割 取sort文件中的1到3列-c 按字符切割-b 按字节切割中文 一个字符 2-3个字节
默认按照空白符分割
awk '{print $1}' # 打印第一个域-F: # 指定分隔符内置变量:FILENAME 文件名FNR 总行数NR 是文件的第几行NF 域的个数FS 设置分隔符 -F改变OFS 输出域分隔符awk -F: '{print $1 "-" $2}' /etc/passwdawk -F: 'BEGIN{} {print $1 $2} END{}' /etc/passwd # 在执行print之前 先执行begin内容 最后再执行end内容#帮助控制awk执行顺序awk 'BEGIN{x=0} {x++} END{print x}'# 打印行数awk -F: '/root/{print $3}' /etc/passwd# 寻找含有root条例 打印第三个域的内容# 打印99乘法表awk 'BEGIN{for(i=1;i<=9;i++){for(j=1lj<=i;j++){printf i "*" j "=" i*j "";}print""}}
文本生成器 搜索
-c 有多少行匹配-v 有多少行不匹配 返回该行内容 结果反转-E 正则表达式-i 忽略大小写-n 输出前加行号-o 输出文件匹配到的部分-A after-B before-C 前后
tip:
正则表达式:
^ 以..开头 / 非 两种意义
$以 .. 结尾
[ ] 范围
流编辑器 一行一行处理 一般不对文件内容直接进行修改 不写入文件
-n 输出变动的行
-e 允许输入多条命令
-i 对文本本身进行编辑 而不是由屏幕输出 而是写入文件
动作
a 追加 后一行
c 行替换
i 插入 前一行
p 打印
s 字符串替换
删除:d命令sed,'2,$d' sed.txt 从第二行到最后一行删除sed '/is/d' sed.txt删除包含is的行sed '/[A-Za-z]/d' sed.txt正则表达式 删除带字母的行整行替换 : c命令sed '2c helloworld' sed.txt把第二行替换为hello字符串替换: s命令sed 's/hello/hi/g' sed.txt全局替换/2 只替换第2个/2g 只替换第2个以后的可以和正则表达 /^hello /sed -n 's/^hello/hi/p' sed.txt第一个单词是hello的行替换为hi同时打印被替换的那些行/&-hi/ 替换为原来的单词-hi/\(liu\)/\1li/ 把liu改成li/ 也可以用#*等(跟在s后面的就是分隔符) 当文本出现/的时候 可以用这种方法解决冲突
搜索文件目录层次结构
find . -name ".txt"
当前目录下找格式为txt的文件
-o 或者
-a 同时
-perm 按照权限