ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

文本操作find cut sort wc sed awk

2021-10-04 13:00:30  阅读:185  来源: 互联网

标签:sort cut wc -- passwd sed awk 分隔符 txt


文本操作

查找文件: # find 大概位置 以名字查找 名字
find /etc/ -name i18n  
find /etc/ -name 70*
find /etc/ -name 70*net*
查找文件: whereis java --> java: /usr/bin/java
查找文本 /key 向下查询 n下一个 , N上一个

​ ?key 向上查询 n上一个 ,N下一个

1.cut: 显示切割的行数据
  • -s : 不显示没有分隔符的行

  • -d : 指定分隔符对源文件的行进行分割

  • -f : 选定显示哪些列

    • m-n m列到n列
    • -n 第一列到n列
    • m- 第m列到最后一列
    • n 第n列
  • 以 : 作为分隔符,切割passwd,输出从第3个字段到第5个字段

	cut -d ":" -f 3-5 /et/passwd
	cut -s -d ":" -f 3-5 /et/passwd
  • --output-delimiter指定输出的时候的各字符分隔符

    显示1,3,7列

cut -d ":" -f 1,3,7 -s passwd
cut -d ":" -f 1,3,7 -s --output-delimiter="|" passwd
2.sort 排序:字典序和数值序
  • sort : 排序文件的行
    • -n : 按数值排序
    • -r : 倒序 reverse
    • -t : 自定义分隔符
    • -k : 选择排序列
    • -f : 忽略大小写

默认字典排序

sort -t ' ' -k 2 sort.txt  --以空格为分隔符,对第二列进行排序

3 .wc
  • 对每个文件输出行、单词、和字节统计数*
    • -c 输出字节统计数
    • -l 输出换行符统计数
    • -L 输出最长行的长度
    • -w 输出单词统计数
    • --version 输出版本信息并退出
4.sed 行编辑器
  • -n:静默模式,不再默认显示模式空间的内容
  • -i:直接修改源文件
  • -e Script -e Script:可以同上执行多个脚本
  • -r:表示使用扩展正则表达式
  • d:删除符合条件的行
  • p:显示符合条件的行
  • w file:将地址指定的范围内的行另存至指定文件
  • r file:将指定的文件内容添加到符合条件的行的位置
  • s/string1/string2:查找并替换,默认只替换每行第一个模式匹配到的字符串
--在sed.txt的第一行下面一行插入hello world
sed "1a hello world" sed.txt(源文件不发生变化)
cat sed.txt --查看sed.txt文件
sec -i "la hello world" sec.txt(源文件改变)
--在sed.txt的第二行上面一行插入hello world
sed "2i hello world" sed.txt(源文件不发生变化)
--删除第二行
sed "2d" sed.txt(源文件不发生改变)
sed -i "2d" sed.txt(源文件改变)
--删除文档中的每一行
sed "d" sed.txt
sed -i "d" sed.txt
--原来的内容要打印,匹配的行要打印,找到的行会打印两次
sed "/[0-9]/p" sed.txt
--匹配行中包含0-9任意一个字符的行,只打印找到的行
sed -n "/[0-9]/p" sed.txt
--将filesystem替换为FS
sed "s/filesystem/FS" sed.txt(区分大小写,只替换第一个)
sed "s/filesystem/FS/i" sed.txt(不区分大小写,只替换第一个)
sed "s/filesystem/FS/gi" sed.txt(不仅不区分大小写,还要行内全部替换)
--修改指定行内的内容
--将id:5:initdefalut中的默认运行级别5改为3
sed "s/\(id:)5\(:initdefalut)/\13\2"
sed -r "s/(id:)5(:initdefalut)/\13\2" --效果同上
--查找/etc/profile中包含PATH的行,将这些行写到指定的文件:hello.log中
sed -n "/PATH/w hello.log /etc/profile"
5. awk 文本分析工具
  • 相对于grep查找、sed编辑、awk在对数据分析并生成报告时更为强大
  • awk把文件逐行读入,以空格和制表符作为默认分隔符将每行切片,切开的部分再进行各种分析处理。

格式: awk -F '{pattern + action}'{filenames}

    • 支持自定义分隔符
    • 支持正则表达式匹配
    • 支持自定义变量、数组 a[1] a[tom] map(key)
    • 支持内置变量
      • ARGC 命令行参数
      • ARGV 命令行参数排列
      • ENVIRON 支持队列中系统环境变量的使用
      • FILENAMR awk浏览的文件名
      • FNR 浏览文件的记录数
      • FS 设置输入域分隔符,等价于命令行-F选项
      • NF 浏览记录的域的个数
      • NR 已读的记录数
      • OFS 输出域分隔符
      • ORS 输出记录分隔符
      • RS 控制记录分隔符
      • 支持函数
        • print split substr sub gsub
      • 支持流程控制语句,类C语言
        • if while do/while for break continue
--只显示/etc/passwd的账户
awk -F ':' '{print $1}' passwd  
awk -F ':' '{print $1,$7}' passwd  --打印passwd文件的第一列和第七列
awk -F ':' '{print $1","$7}' passwd  --指定分隔符,输出的第一列和第七列以逗号分隔
--在所有行开始前添加列名name,shell,在最后一行添加“shell,end”
awk -F ':' 'BEGIN'{print "name,shell"}'{print $1 "," "$7"} END'{print "shell,end"}' passwd
--搜索/etc/passwd有root关键字的所有行
cp /etc/passwd ./
awk '/root/{print $0}' passwd
--统计/etc/passwd文件中,每行的行号,每行的列数,对应的完整的行内容
awk -F ':' '{print NR "-" NF "-" $0}' passwd
--查找并截取打印某字段
awk -F ':' '/root/{print $1}' passwd

标签:sort,cut,wc,--,passwd,sed,awk,分隔符,txt
来源: https://www.cnblogs.com/Boyka1/p/15366212.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有