在Linux下使用shell文本处理工具包

在Linux下使用shell文本处理工具包
评论:Linux的操作习惯不同于Windows,它可以通过windows操作。它由许多不同的命令组成。
在Linux的操作习惯与Windows有一个窗口进行操作,它是一个很大的不同,本文将介绍最常用的文字处理工具,使用Linux下的shell:发现,grep,xargs,排序,uniq,TR,剪切,粘贴,WC,sed,awk;
所提供的示例和参数是最常用和最实用的。
我使用shell脚本的原则是命令一行文字,尽量不要超过2行。如果您有更复杂的任务要求,请考虑python。

查找文件查找

查找txt和PDF文件
找到。(名称)txt

定期查找txt和PDF
找到。-正则表达式,( .txt | .pdf )___fckpd___1quot;

- iregex:忽视案件的典型规律

负参数
查找所有非TXT文本
找到。!-名称*-打印

指定搜索深度
打印当前目录的文件(深度1)
找到。-maxdepth 1 F型

自定义搜索

按类型搜索:
找到。类型D打印只列出所有目录

类型F文件符号链接

按时间搜索:
-时间访问时间(单位为天,分单元-阿明,以下是类似的)
影评:修改时间(内容修改)
- ctime改变时间(元数据或权限的变化)
过去7天中所访问的所有文件:
找到。- 7 - F型打印时间

按大小搜索:
K M G
寻找大于2K的文件
找到。型F尺寸+ 2K

经许可查阅:
找到。-类型-烫发- 644 -打印/查找所有可执行文件权限

由用户查找:
找到。-类型F -用户韦伯打印查找用户Weber拥有的文件

发现后随访

删除:
Delete all SWP files in the current directory:
找到。- F型名称*。SWP-删除

执行动作(强力执行)
查找类型F用户根-执行。Chown Weber {} ; / /当前目录更改到Weber的所有权

注意:{ }对于每个匹配的文档都是一个特殊的字符串,{将用相应的文件名替换;
Eg:你找到的所有文件都复制到另一个目录:
找到。型F时间+ 10名*. txt-exec CP老{} ;

组合多个命令
提示:如果需要跟踪多个命令,可以将多个命令写入脚本;
-exec。 / commands.sh {} ;

打印分隔符

使用默认值文件作为分隔符;
- print0使用 0'as文件分隔符,所以你可以搜索文件包含空格;

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的秩。
如:
排序1 data.txtsort NRK BD数据 / /忽略前导空格或其他字符

uniq消除重复

消除重复
unsort.txt uniq |排序

文件中统计数据出现的次数。
unsort.txt uniq -c |排序

找到重复的线
排序unsort.txt uniq -d |
您可以指定一个需要在每一行进行比较的重复内容:s开始位置W比较字符数

转换与TR

一般使用
回声12345 TR '0-9'9876543210 ' / / |加密转换,猫文本| TR t'to更换相应的字符 / /转表空间

TR删除字符
猫D的|文件TR '0-9 / /删除所有数字

C-补集
猫的| TR C文件'0-9 / /获取文件的所有数字cat-file TR - D - C '0-9 | / /删除非数字数据

TR的压缩特性
压缩文本中的重复字符;最常用于压缩冗余空间。
猫的| TR -文件

字符类
在TR中可以使用多种字符类:
Alnum:字母和数字
甲:信
数字:数字
空格:空白字符
下:小写
上:大写
控制:控制(非打印字符)
打印:可打印字符
使用方法::类:}:类:}
Eg:低:}:上:}

按列剪切文本

截取文件的第二列和第四列是:
切f2,4文件名

第三列中的所有列都从文件中删除:
剪切F3 -补充文件名

- d指定定界符:


截割范围
n到最后的n个字段
m的第一个域是m
·m n m领域

被砍的单位
以字节为单位
C是单位中的一个字符。
F在现场单元(使用文本)

如:
切割文件 / / C 1-5减少打印头5个字符的文件 / /打印C-2的前2个字符

按列粘贴文本粘贴

在列中拼接两个文本;
猫file112cat file2colinbookpaste file1 file21 colin2书

默认分隔符是一个选项卡,可以使用d指定分隔符。
粘贴file1 file2 - D
1、柯林
2、本书

统计线和字符工具

文件编号
统计文件的数量
统计文件的字符数

文本替换工具

首先更换
赛格的 / / / replace_text文本文件 / /替换每一行的第一个匹配的文本

全局替换
赛格的 / / / g'file replace_text文本

在默认替换后,输出替换内容,如果您需要直接替换原始文件,使用i:
赛格-我的 / / / g'file repalce_text文本

删除空白行:
SED的 / / d'file ^美元

变量的转换
匹配的字符串被标记引用。
回声这是恩例赛格的 / / W + {} / G '___fckpd___37gt { } { } { } {案例} |恩;

子串匹配的标记
使用标记 1引用第一个匹配的括号内容。
SED的 /你好({ 0-9 } ) / 1

双引号的评价
SED通常用单引号引用,也可以使用双引号,双引号用于在使用双引号后对表达式进行计算:
SED的 / / / hlloe VaR美元

当使用双引号时,我们可以在SED样式和替换字符串中指定变量。
Eg:P =结构= replacedecho线控制模式| SEDS / P / R / G美元___fckpd___40gt;线Con A取代

其他的例子
字符串插入字符:将文本的每一行(佩克沙河)文本中的北京 /沙
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;} '___fckpd___43gt;V1、V2、V3

使用拼接()作为拼接的方式;
回声|的awk { var1 =V1;VAR2 =V2;var3 = V3 ;打印var1 var2 var3;} '___fckpd___44gt;v1-v2-v3

特殊变量:NR NF 0美元1美元2美元

NR:表示记录的数量,并与执行期间的当前行数相对应。
NF:表示在执行过程中应该包含的字段数和字段数;
$ 0:这个变量包含执行过程中当前行的文本内容;
第一字段的文本内容为1美元:;
第二个字段的文本内容为2美元:;
回声E1 F2 F3 2 线awk {打印NR 3| 0元,1元2美元}

为每行打印第二个和第三个字段:
awk {打印2美元、3美元}文件

统计文件的数量:
awk端{打印NR }的文件

累积每一行的第一个字段:
回声e 12 3 4 | awk'begin { num = 0;打印= 开始;} {金额1美元;端{打印;}= =和打印}

转移的外部变量
var = 1000echo awk {打印内翻} 'vara =美元| stdinawk{ # VaR打印内翻}的内翻= $ var文件输入从输入文件#

过滤的awk样式加工线

awk'nr<5的#线数小于5
awk'nr = = 1,NR = = 4 } {打印文件#行数等于打印出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 { { } LNO = NR NR后进先出法}(= 0美元;结束{;LNO > 1;LNO——{打印} } } {后进先出法;')

awk工具头、尾的命令

Head:
awk'nr <= 10 { } 'filename打印

尾:
awk { { 10 } =缓冲橡胶0美元;} {(i = 0为结束;我<11;i++){ 打印缓冲区{ 10 } } }我的文件名

打印指定的列

awk模式的实现:
ls -lrt awk {打印6美元的| }

切割模式的实现
LS—轻轨割F6 |

打印指定的文本区域。

确定行号
Seq 100 | awk'nr = = 4,NR = = 6 } {打印

确定文本
打印start_pattern和end_pattern之间的文本;
awk / / / start_pattern,end_pattern / 'filename
如:
SEQ 100文件 / 13 / / / /等15里/ passwd | |,awk /麦。*邮件 / / / *新闻消息。

awk常用内置函数

指数(字符串,search_string):返回字符串中的位置search_string
子(正则表达式,replacement_str,字符串):取代常规赛第一的内容replacement_str;
匹配(正则表达式、字符串):检查一个正则表达式可以匹配一个字符串;
长度(字符串):返回字符串长度
回声awk |{grep根/等/ passwd| getline cmdout;打印长度(cmdout)}

printf函数类似于C语言中的printf格式化输出
如:
10 | SEQ文件{ printf-> % 4s 1美元}

迭代文件中的行、字和字符

1行中的每一行。迭代文件

而循环的方法
而读线;doecho $线;做<< file.txt成壳:猫子file.txt |(读取行;做echo $线;完成)

awk方法:
猫文件.txt | awk { }打印

2。在一行中迭代每个单词
对于单词$行;做回声$字;完成

三.每个字符的迭代

$ {字符串:start_pos:num_of_chars }:从字符串中提取字符;(bash文字片)
$ { #字}:返回可变字长
为(((i = 0;} {我<美元#字;i++)){字:我doecho美元:1);完成

tag:文本处理电脑软件Linuxshell

相关内容