Linux文本处理工具包
所提供的示例和参数是最常用和最实用的。
我使用shell脚本的原则是命令一行文字,尽量不要超过2行。
如果有更复杂的任务需求,请考虑Python。
查找文件查找
查找txt和PDF文件
复制代码如下:查找。(名称*O---打印
按常规方式查找txt和PDF
将代码复制如下:查找。-正则表达式,( .txt | .pdf )
- iregex:忽视案件的典型规律
阴性参数
查找所有非TXT文本
复制代码如下:查找。-名称*-打印
指定搜索深度
打印当前目录的文件(深度1)
复制代码如下:查找。-maxdepth 1 F型
自定义搜索
公牛;按类型搜索:
将代码复制如下:查找。类型D打印只列出所有目录
类型F文件符号链接
牛市;按时间搜索:
-时间访问时间(单位为天,分单元-阿明,以下是类似的)
影评:修改时间(内容修改)
- ctime改变时间(元数据或权限的变化)
过去7天中所访问的所有文件:
复制代码如下:查找。- 7 - F型打印时间
公牛;按大小搜索:
K M G
寻找大于2K的文件
复制代码如下:查找。型F尺寸+ 2K
经许可查阅:
将代码复制如下:查找。-类型F -烫发644 -打印查找所有文件的可执行文件权限
由用户查找:
复制代码如下:查找。-类型F -用户韦伯打印查找用户Weber拥有的文件
发现后随访
删除:
删除当前目录中的所有程序文件:
复制代码如下:查找。- F型名称*。SWP-删除
多头;执行(强力执行)
将代码复制如下:查找。- F型用户根-exec chown韦伯{} ; / /当前目录更改到Weber的所有权
注意:{ }对于每个匹配的文档都是一个特殊的字符串,{将用相应的文件名替换;
Eg:你找到的所有文件都复制到另一个目录:
将代码复制如下:查找。型F时间+ 10名*. txt-exec CP老{} ;
多头;结合多个命令
提示:如果需要跟踪多个命令,可以将多个命令写入脚本;
复制代码如下:-exec。 / commands.sh {} ;
打印分隔符
使用默认的文件;作为分隔符;
- print0 rsquo; 0prime;文件作为分隔符,所以你可以搜索文件包含空格;
grep搜索文本
grep match_patten文件 / /默认接入线
普通参数
o只输出匹配的文本行VS,以输出不匹配的文本行。
C统计文件中包含的文本数
复制代码如下:grep -C文本文件名
n打印匹配的行号
-我搜索忽略案例和案例
l只打印文件名
递归地在多级目录中搜索文本(最喜欢程序员的代码搜索):
复制代码如下:grep类。- R - N
多头;匹配多种模式
复制代码如下:grep -E类-虚拟文件
公牛;grep输出 0文件名作为文件结束:(Z)
复制代码代码如下:grep测试文件* LZ | xargs - 0室
xargs命令行参数转换
xargs可以将数据输入到一个特定的命令行参数;这样,它可以用在许多命令的组合。例如,grep,如发现;
公牛;多路输出转换为单一线路输出
txt文件| xargs猫。
是多行文本分隔符。
公牛;变换成多行输出一行
猫single.txt xargs -n 3 |
N:指定每行显示的字段数
xargs参数描述
- d定义分隔符(用于更多空间的默认分隔符))
n指定多行输出。
我{ }替换指定的字符串,字符串将在xargs命令的扩展更换,需要多个参数
如:
复制代码如下:猫file.txt xargs -我 / command.sh P | { } { } 1
- 0:指定 0输入定界符
Eg:统计程序行
复制代码如下:找到source_dir / F型名称*。CPP print0 | xargs 0 WC L
排序排序
字段描述:
n排序与三维数字按字典顺序
r的逆阶
- k指定列n的秩。
如:
复制代码代码如下所示:
排序NRK 1 data.txt
排序- BD数据忽略,如前导空格或其他字符
uniq消除重复
消除重复
复制代码如下:排序unsort.txt uniq |
计算文件中的次数。
复制代码如下:unsort.txt uniq -c |排序
发现重复的
复制代码如下:排序unsort.txt uniq -d |
您可以指定一个需要在每一行进行比较的重复内容:s开始位置W比较字符数
转换与TR
公牛;一般用法
复制代码代码如下所示:
回声12345 TR '0-9'9876543210 ' / / |加密转换,更换相应的字符
猫的文字| TR T / /标签空间
删除字符
Copy the code as follows: cat file tr -d'0-9'| / / remove all digital
C-补集
复制代码代码如下所示:
猫的| TR C文件'0-9 / /让所有的数字文件
猫档TR - D - C '0-9 | / /删除非数字数据
字符压缩字符
压缩文本中的重复字符;最常用于压缩冗余空间。
复制代码如下:猫的| TR -文件
字符类
在TR中可以使用多种字符类:
Alnum:字母和数字
甲:信
数字:数字
空格:空白字符
下:小写
上:大写
控制:控制(非打印字符)
打印:可打印字符
使用方法::类:}:类:}
将代码复制为以下内容::
按列剪切文本
截取文件的第二列和第四列:
复制代码代码如下:割f2,4文件名
除了文件以外,转到第三列的所有列:
复制代码如下:剪切F3 -补充文件名
指定指定分隔符:
复制代码代码如下:猫D;文件名。
公牛;切割范围
n到最后的n个字段
m的第一个域是m
·m n m领域
公牛;被砍的单位
以字节为单位
C是单位中的一个字符。
F在现场单元(使用文本)
公牛:
复制代码代码如下所示:
切割文件 / / C 1-5打印的前5个字符
割C-2文件 / /打印的前2个字符
按列粘贴文本粘贴
在列中拼接两个文本;
复制代码代码如下所示:
猫file1
一
二
猫file2
柯林
书
粘贴file1 file2
1柯林
2本书
默认分隔符是一个选项卡,可以使用d指定分隔符。
粘贴file1 file2 D ;
1、柯林
2、本书
统计线和字符工具
文件编号
统计文件的数量
统计文件的字符数
文本替换工具
公牛;首先替换
复制代码如下:赛格的 / / / replace_text文本文件 / /替换每一行的第一个匹配的文本
全球替代
复制代码代码如下:赛格的 / / / g'file replace_text文本
在默认替换后,输出替换内容,如果您需要直接替换原始文件,使用i:
复制代码如下:赛格-我的 / / / g'file repalce_text文本
删除空白行:
复制代码代码如下:SED的 / / d'file ^美元
变量变换
匹配的字符串通过标记引用。
复制代码代码如下所示:
回声这是恩例赛格的 / / W + {和} / G |;
$ { {此} { } }为示例}
牛子串匹配的标记;
使用标记 1引用第一个匹配的括号内容。
复制代码如下:SED的 /你好({ 0-9 } ) / 1
牛市;双引号评估
SED通常用单引号引用,也可以使用双引号,双引号用于在使用双引号后对表达式进行计算:
复制代码代码如下:SED的 / / / hlloe VaR美元
当使用双引号时,我们可以在SED样式和替换字符串中指定变量。
复制代码代码如下所示:
如:
P =模式
R =取代
回声线控制S / P / R / G SED美元模式|
美元;线替换
公牛;其他例子
字符串插入字符:将文本的每一行(佩克沙河)文本中的北京 /沙
复制代码如下:SED的 / ^。
3
} { /放大器; / / g'file
awk的流数据处理工具
公牛;awk脚本结构
awk ‘开始{语句} { } '最后陈述语句2;
公牛;工作方式
1。开始执行语句块;
2。读取一个文件或标准输入的一行,然后执行语句2,重复这个过程,直到所有的文件被读取;
三.执行结束语句块;
打印当前行
当使用无参数打印时,当前行将被打印;
复制代码如下:回声E线2| awk'begin {打印开始} } { {结束打印打印}结束
当打印用逗号分隔时,参数由空格来限定;
复制代码代码如下所示:
回声|的awk { var1 =V1;VAR2 =V2;var3 = V3;
打印var1,var2,var3;}
$ gt;V2 V2 V3
使用连接的方式;
复制代码代码如下所示:
回声|的awk { var1 =V1;VAR2 =V2;var3 = V3;
打印var1 var2 var3 };
美元v1-v2-v3 gt;
特殊变量:NR NF 0美元1美元2美元
NR:表示记录的数量,并与执行期间的当前行数相对应。
NF:表示在执行过程中应该包含的字段数和字段数;
$ 0:这个变量包含执行过程中当前行的文本内容;
第一字段的文本内容为1美元:;
第二个字段的文本内容为2美元:;
复制代码如下:回声E线F2 F3 2 线awk {打印NR 3| 0元,1元2美元}
为每行打印第二个和第三个字段:
复制代码如下:awk {打印2美元、3美元}文件
统计文件的数量:
复制代码代码如下:awk端{ }的文件打印NR
公牛;每一排的第一个场地:
复制代码代码如下所示:
回声e 12 3 4 | awk'begin {数= 0;
打印开始};{ + = 1美元;结束{打印;} 打印总和}
转移的外部变量
复制代码代码如下所示:
var = 1000
回声awk {打印内翻} 'vara = $ VaR | #从stdin输入
awk {打印内翻} 'vara = $ var文件#从输入文件
过滤的awk样式加工线
awk ‘NR小于5prime;#线数小于5
awk ‘NR = = 4 } {打印' NR = = 1;文件,#行数等于打印出1和4
awk ‘ / /我的Linux Linux;#包含多行文本(可以使用正则表达式来指定,超强)
awk ‘ / /我# Linux Linux!不包含行的文本。
设置分隔符
使用f设置分隔符(默认空格)
awk -F:‘{ print $ NF }我 / /密码等;
读命令的输出
使用的时候,外壳的命令的输出读入变量cmdout;
复制代码代码如下所示:
回声awk |{grep根/等/口令getline cmdout打印cmdout }的|;
在awk中使用环
对于(i = 0;i < 10;i +);打印$ i;}
对于(i在数组中){打印数组{ };}
如:
以相反的顺序打印行:(TAC命令的实现)
复制代码代码如下所示:
序列9 |
awk { } = { NR后进先出0美元;LNO = NR }
{为结束(;lnogt;1;LNO --){ } { }打印后进先出结构;
}
awk工具头、尾的命令
公牛;头:
复制代码如下:awk'nrlt = 10;} {打印'filename
公牛;尾巴:
复制代码代码如下所示:
awk { { 10 } =缓冲橡胶0美元;} {(i = 0为末;传染性喉气管炎;11;i++){
打印缓冲区{ i 10 } }文件名
打印指定的列
公牛;awk模式的实现:
复制代码如下:ls -lrt awk {打印6美元的| }
剪切模式实现
复制代码如下:LS -轻轨割F6 |
打印指定的文本区域。
确定行号
复制代码如下:以下100 | awk'nr = = 4,NR = = 6 } {打印
确定文本
打印start_pattern和end_pattern之间的文本;
复制代码如下:文件 / / / start_pattern,end_pattern / 'filename
如:
复制代码代码如下所示:
Seq 100 | awk / 13 / / / 15,
猫/ etc / passwd | awk /麦。*邮件 / / / *新闻消息。
awk常用内置函数
指数(字符串,search_string):返回字符串中的位置search_string
子(正则表达式,replacement_str,字符串):取代常规赛第一的内容replacement_str;
匹配(正则表达式、字符串):检查一个正则表达式可以匹配一个字符串;
长度(字符串):返回字符串长度
复制代码如下:回波awk |{grep根/等/ passwd| getline cmdout;打印长度(cmdout)}
printf函数类似于C语言中的printf格式化输出
如:
复制代码如下:以下10 | awk { printf - gt;% 4s ,1美元}
迭代文件中的行、字和字符
1行中的每一行。迭代文件
周期法
复制代码代码如下所示:
读行时;
做
回波$线;
做file.txt lt;
变成贝壳:
猫file.txt |(读取行;做echo $线;完成)
公牛;awk方法:
猫文件.txt | awk '打印';{ };
2。在一行中迭代每个单词
复制代码代码如下所示:
一字不差;
做
回声字;
多恩
三.每个字符的迭代
$ {字符串:start_pos:num_of_chars }:从字符串中提取字符;(bash文字片)
$ { #字}:返回可变字长
复制代码代码如下所示:
为(((i = 0;} $ { # ILT;词;i++))
做
回声$ Word:I:1);
多恩