这篇具有很好参考价值的文章主要介绍了linux文本三剑客。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。
1、grep
过滤/查找
参数 |
用法 |
作用 |
-i |
grep -i STRING xxx.txt |
从xxx.txt文件查找不区分大小写STRING |
-w |
grep -w STRING xxx.txt |
精确匹配STRING |
-e |
grep -e STRING1 -e STRING2 xxx.txt |
查找多个STRING行 |
-n |
grep -n STRING xxx.txt |
查看STRING 在第几行 |
-v |
grep -v STRING xxx.txt |
输出不包含STRING的行 |
-r |
grep -r STRING DIR/ |
查找DIR目录下哪个文件包含STRING,-lr就只输出同一个文件名称 |
-E |
grep -E 'aaa |
bbb’ xxx.txt |
-C |
grep STRING -C 5 xxx.txt |
查看上下5行 |
2、sed
逐行读取并处理文件
增删改查
参数 |
参数 |
用法 |
作用 |
-e |
sed -e '表达式' xxx.txt |
接表达式,可以接多个-ne -e |
-ie |
sed -ie '表达式' xxx.txt |
e可以省略,加上-e后会生成一个 xxx.txte的原文件作为副本方便恢复,但是-i -e 并不会生成副本文件;-i确认修改生效 |
表达式 |
xi |
第x行前插入yyy |
sed -e '2i\hello world' xxx.txt |
xa |
第x行后插入yyy |
sed -e '2a\hello world' xxx.txt |
xd |
删除第x行 |
sed -e '4d' xxx.txt |
xc |
覆盖第x行(整行替换) |
sed -e '1c\aaaa' xxx.txt |
xs |
替换第x行的yyyy为kkk(局部替换) |
sed -e '2s/yyyy/kkk/' xxx.txt,这里只能替换一个yyyy,如果存在多个yyyy可以使用'2s/yyyy/kkk/g',表示把第2行中所有的yyyy替换为kkk |
xp |
指定打印第x行 |
sed -e '1p' xxx.txt,,但是用-e 会把缓存区的数据也读出来,改为-n(表示只采用改变的内容)即可 |
sed -e '表达式' xxx.txt
例如:
在第二行插入(i)hello world文章来源:https://www.toymoban.com/news/detail-669773.html
sed -e '2i\hello world' test20230823.txt
文章来源地址https://www.toymoban.com/news/detail-669773.html
3、awk
awk '{表达式}' xxx.txt
内建变量 |
变量 |
作用 |
$0 |
完整的输入记录 |
$n |
当前列,字段由FS分隔 |
FS |
字段分隔符,默认是空格 |
OFS |
输出字段分隔符,默认值与输入字段分隔符一致 |
NR |
行 |
NF |
|
参数 |
参数 |
用法 |
作用 |
-v |
sed -v OFS='#' 'print $1,$2,$3' xxx.txt |
OFS指定分隔符,这里以#把第一二三列进行拼接并打印出来 |
-F |
sed -F':' '{print $1}' xxx.txt |
告诉awk在处理文本时使用指定的分隔符来分割字段 |
表达式 |
{print $1,$2,$3} |
打印第一二三列 |
awk '{print $1,$2,$3}' xxx.txt |
{if (NR==4){print $0} else {print "这不是第四行"}} xxx.txt |
判断是否是第四行,是则打印该行,不是则打印这不是第四行 |
awk '{if (NR==4){print $0} else {print "这不是第四行"}}' xxx.txt |
NR==2{print $0} |
打印第二行 |
awk 'NR==2{print $0}' xxx.txt |
/111/{print $0} |
打印以111开头的行,正则 |
awk '/111/{print $0}' xxx.txt |
到了这里,关于linux文本三剑客的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!