先上思维导图!
文本操作
cut 切割数据
cut -d “分隔符” -f 列 /路径/文件
./ 代表当前目录
…/ 代表上级目录 也就是同级目录
#以冒号作为分隔符 切割文件passwd 输出3-5列的字段 也就是【3,5】闭区间的字段
cut -d ":" -f 3-5 /etc/passwd
#识别时分隔符是: 输出时分隔符是..
cut -d ":" -f 3 --output delimiter=".." passwd
- -d --divide=分隔符
- -f --fields=列数list
3-5 表示[3,5]的闭区间
-2 表示前两列
3- 第三列到最后一列
1,3,7 第1,3,7列 - -s, --only-delimited 不显示 没有 分隔符 的 行
sort 排序
排序:分为字典序和数值序
#按照第一列的开头字母顺序排序
sort sort.txt
#以空格为字段分隔符 按照第二列的开头字母顺序排序
sort -t ' ' -k 2 sort.txt
#以空格为字段分隔符 按照第三列的数值正序排序
sort -t ' ' -k 3 -n sort.txt
- -t ‘【分隔符】’ 自定义分隔符
- -k 指定排序的列
- -n number 按照数值顺序排序
wc (word count)
#代表8行line 21个单词word 67个字节char
wc sort.txt
8 21 67 sort.txt
sed(stream行 editor)
#在第一行追加一行 写hw
sed "1a\hello world" sed.txt
#删除第二行
sed "2d" sed.txt
#删除每一行
sed "d" sed.txt
#匹配行内含有0-9的行,只打印符合条件的行用-n
sed -n "/[0,9]/p" sed.txt
#将filesystem替换FS 且忽略大小写+全局
sed "s/filesystem/FS/gi" sed.txt
#只id:3:initdefault:这一行里的3替换成5
sed "s/3/5/" inittab #会文件全行替换
sed -r "s/(id:)3(:initdefault:)/\15\2/" inittab
#注意一定要\15\2 不然是全行替换成5
#取名对称原则 s/替换前char1/替换后char2 两个char都要\\
- -i 直接修改insert源文件
- -r 扩展正则表达式 替换\
字符串内填写(冒号内)
- d 删除delete符合条件的行
- p 显示符合条件的行
- a 在指定的行后追加append新行
- s 查找并替换
i忽略大小写
g全局替换(非全局替换时只替换行内第一个)
awk 文本分析
这命令强大 三个人发明 所以是AWK三个人首字母
- 支持自定义变量 数组a[1], a[tom], map[key]
- 可以比grep查找,sed编辑更为强大