Shell处理文本时最常用的工具

linux命令解读方法

  • 1Linux命令格式:命令字 [命令选项] [命令参数]

(1) 命令字即命令名称,在linux命令行界面使用的命令字唯一确定一个命令。
(2)命令选项:根据命令的不同,选项的个数和内容也不同。根据要实现的命令功能不同,选项的个数和内容也不同,大多数命令选项可以组合使用,命令选项有短格式和长格式的。
短格式就是单个英文字母,选项是使用“ -”符号(半角减号符)引导开始选项,字母可以是大写也可以是小写。如 ls -al 。
长格式的命令选项使用英文单词表示,选项前用“–”(两个半角减号符)引导开始的。如 --abc --xyz。
(3)命令参数:是命令处理的对象,通常情况可以是文件名、目录、或用户名。

  • 命令字、命令选项、命令参数之间用空格来隔开。

  • help短格式是内部命令,格式是 “help 参数”,加选项-s 只显示命令的格式信息。

  • man命令,全称是(man page )手册页的意思。格式为 “man 参数 ”参数为命令,按方向键移动。它可以分页显示,也可以使用键盘上的Page Down、Page up 向下或向上翻屏。

  • info命令,全称是(info page)信息页的意思。是linux中类似于man 的另一中帮助信息的形式。信息页提供了主题间的连接跳转。

find、grep、xargs、sort、uniq、tr、cut、paste、wc、sed、awk;

find 文件查找

1查找txt和pdf文件

find .(-name "*.txt" -o -name "*.pdf") -print 

2正则方式查找.txt和pdf

find . -regex ".*(.txt | .pdf)$"
-iregex: 忽略大小写的正则

3否定参数

查找所有非txt文本

find . ! -name "*.txt" -print

4指定搜索深度

//打印出当前目录的文件(深度为1)
find . -maxdepth 1 -type f

5定制搜索

//按类型搜索
find . -type d -print //只列出所有目录
-type f 文件
-type l 符号链接
//按时间搜索
-atime 访问时间  //单位是天,分钟单位是-amin
find . -atime 7 -type f -print
-mtime 修改时间 //内容被修改
-ctime 变化时间 //元数据或权限变化
//按大小搜索
find . -type f -size +2k
//按权限查找
find . -type f -perm 644 -print //找具有可执行权限的所有文件
//按用户查找
find . -type f -user tang -print //找用户tang所拥有的文件

6找到后的后续动作

find . -type f -name "*.swp" -delete
find . -type f -user root -exec chown tang {r}; //将当前目录下的所有权变更为tang
find . -type f -mtime +10 -name "*.txt" -exec cp {} OLD; //将找到的文件全部copt到另一个目录
//如果后续执行多个命令,可以将多个命令写成一个脚本
-exec ./commands.sh {};

grep 文本搜索

grep match_pattern file 
-o 只输出匹配的文本行
-v 只输出没有匹配的文本行
-c 统计文件中包含文本的次数
grep -c "text" filename
-n 打印匹配的行号
-i 搜索时忽略大小写
-l 只打印文件名
grep "class" -R -n	//在多级目录中对文本递归搜索
grep -e "class" -e "vitural" file //匹配多个模式

xargs 命令行参数转换

将输入数据转化为特定命令的命令行参数

cat file.txt | xargs //将多行转化为单行输出
cat single.txt | xargs -n 3将单行转化为多行输出
-d 定义定界符(默认为空格)
-l {} 指定替换字符串
-0 指定为输入定界符

sort 排序

-n 按数字进行排序
-d 按字典进行排序
-r 逆序
-k N 指定按第N列排序
sort -nrk 1 data.txt
sort -bd data //忽略像空格之类的前导空白字符

uniq 消除重复行

sort unsort.txt | uniq //消除重复行
sort unsort.txt | uniq -c //统计各行在文件中出现的次数
sort unsort.txt | uniq -d //找出重复行

用 tr 进行转换

echo 12345 | tr '0-9' '9876543210'
cat text | tr '		' ' ' //制表符转空格
cat file | tr -d '0-9'    //删除所有数字
cat file | tr -c '0-9'	  //获取文件中所有数字
cat file | tr -d -c '0-9' //删除非数字数据

cut 按列切分文本

cut -f2,4 filename  //截取文件的第2列 第4列
cut -f3 --complement filename //取文件除第3列的所有列
cat -f2 -d ";" filename //-d 指定定界符
-b //以字节为单位
-c //以字符为单位
-f //以字段为单位(使用定界符)
N-M NM个字段

paste 按列拼接文本

paste file1 file2 -d ","   //默认的定界符是制表符,可以用-d指明定界符

wc 统计行和字符的工具

wc -l file	//统计行数
wc -w file	//统计单词数
wc -c file	//统计字符数

sed 文本替换利器

sed 's/text/replace_text/' file //替换每一行的第一处匹配的text
sed 's/text/replace_text/g' file //全局替换 如需直接替换源文件 使用-i
sed '/^$/d' file //移除空白行

awk 数据流处理工具

awk 'BEGIN{ statements } statements END{ statements }'
先执行begin中语句
再从文中读入一行 让后执行statements2 重复这个过程 直到文件全部被读取完毕
最后执行end语句
NR 当前行号
NF 当前行的字段数
-F 设置定界符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值