Shell:文件处理命令与正则表达式

一、sort

sort  对行内容进行升序排序
XXX | sort 选项          sort 选项 文件
 
-n    按照数组进行排序
-r    反向排序
-u    排序后去重
-t '字段分隔符' -k 字段序号    根据-t指定的分隔符的第k个字段进行排序
 

二、uniq

uniq   对连续的重复行进行去重
XXX | uniq 选项          uniq 选项 文件
 
-c    对连续的重复行进行去重,并统计重复次数
-d    仅输出连续重复的行
-u    仅输出不连续重复的行
 

三、tr

tr   对输入的内容进行替换
XXX | tr 选项 '参数1' ['参数2']

-t    tr命令的默认选项,使用 参数2 的字符替换成 参数1 的字符
-c    仅保留 参数1 的字符,其它字符(包括\n)都替换成 参数2 的字符
-s    根据 参数1 进行去重,如果有 参数2 则再用 参数2 的字符替换 参数1 的字符
-d    删除所有 参数1 的字符

删除空行   cat 文件 | grep -v "^$" 
           cat 文件 | tr -s "\n"

Windows的另起一行格式(\r\n)转换成 Linux的另起一行格式(\n)       cat 文件 | tr -d '\r' > 新文件
                                                                    dos2unix 文件
 

四、对数组排序

 echo ${数组名[@]} | tr ' ' '\n' | sort -rn | tr '\n' ' '
 

五、cut

cut  对行内容进行字段截取
XXX | cut 选项 参数

-d '分隔符' -f 字段序号       根据 -d 指定的分隔符的截取显示 -f 指定的字段
--complement                  取反,不显示 -f 指定的字段
--output-delimiter '分隔符'   指定输出的字段分隔符

字符串分片      echo ${变量:下标:长度}                       #下标起始从0开始
                echo $变量 | cut -b 起始下标-终止下标        #下标起始从1开始
                expr substr $变量 起始下标 长度              #下标起始从1开始
 

七、split


split   按照格式拆分文件
-l   根据行数分割文件
-b   根据大小分割文件
-d   输出的目标文件后缀用数字替代

如何将一个10G文件分割为10个1G的文件        split -b 1G -d 原文件  目标文件名前缀
如何将一个100行文件分割为10个10行的文件    split -l 10 -d 原文件  目标文件名前缀


paste  将多个文件按照列进行合并
paste 选项 文件1 文件2 ...

-d '分隔符'     指定输出的字段分隔符
-s              将每个列横向输出

合并文件的行   cat 文件1 文件2  ... > 新文件
合并文件的列   paste -d '分隔符' 文件1 文件2 ... > 新文件


eval   在命令行执行前,先将命令行里的变量置换成对应的值后,再执行命令
a=100
b=a
eval echo \$$b  置换成-->  echo $a  执行-> 100
eval $b=50  置换成--> a=50 执行
echo $a -> 50


通配符        作用范围 匹配文件/目录名
正则表达式    作用范围 匹配文件内容

正则表达式元字符 
基础元字符
\      转义字符,将一些特殊符号转义成普通字符 \? \! \\  将一些普遍字母字符转义成特殊字符 \n \t \r
^      匹配以指定字符串开头的  ^XXX
$      匹配以指定字符串结尾的  XXX$    ^$
.      代表除了 \n 以外的任意字符
[XXX]  匹配中括号里的列表中的任意一个字符  [.\n]  [0-9]  [a-zA-Z0-9]
[^XXX] 匹配除了中括号里的列表中的任何字符  [^0-9]匹配所有非数字的字符   [^a-zA-Z]匹配所有非大小字母的字符
*      匹配*前面的字符或表达式任意次数(包括0次 1次或多次) .*   [0-9]*
{n}    匹配{}前面的字符或表达式 n 次
{n,}   匹配{}前面的字符或表达式至少 n 次(大于等于 n 次)
{n,m}  匹配{}前面的字符或表达式 n 到 m 次(大于等于 n 次且小于等于 m 次)
(注:grep  sed 使用时 {} 前面要加 \ ;egep  awk  grep -E  sed -r 使用时 {} 前面不用加 \)


扩展元字符
+      匹配+前面的字符或表达式至少1次(大于等于1次 {1,})
?      匹配?前面的字符或表达式0次或1次({0,1})
()     将()里的表达式作为一个整体    (oo)*   (oo)?
|      或       (oo|aa)   (oo|aa)?
 

  • 12
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值