大括号扩展{}
逐个扩展
echo {a,1,4}b
# ab 1b 4b
增量扩展
echo {1..5}b
# 1b 2b 3b 4b 5b
上面间隔为1,其实还可以指定增量间隔
echo {1..10..2}b
# 1b 3b 5b 7b 9b
对列进行处理 cut
cut [option] filename
-d 指定分隔符,默认为制表符
-f 指定需要提取的字段编号,从1开始,范围表示如下:
N 只有第N项
N- 从第N项一直到行尾
N-M 从第N项到第M项(包括M)
-M 从一行的开始到第M项(包括M)
类似,-b、-c、-f分别表示字节、字符、字段(即byte、character、field)
对行进行处理 sed
sed [option] command filename
-n 只输出经过sed处理的那一行,默认全部输出
-r :使用正则模式匹配
-i :直接修改文件内容
command 形式: [n1[,n2]] [pattern] function
n1, n2 :代表选择进行动作的行数
pattern:用正则模式匹配,必须结合-r选项
function:
a :追加 ,向匹配行后面插入内容, a 的后面接字串
c :更改 ,更改匹配行的内容,c 的后面接字串
d :删除 ,删除匹配的内容
i :插入,向匹配行前插入内容,i 的后面接字串
p :打印,打印出匹配的内容,通常 与-n 一起使用
s :替换,替换掉匹配的内容
常用的比如:
# 取文件中50-100行(两边都包括)
sed -n 50,100p filename > newfile
# 替换
sed s/要被取代的字串/新的字串/g
字符串搜索 grep
grep option command filename
-c 计算找到的符合行的次数
-i 忽略大小写
-n 顺便输出行号
-v 反向选择,即找 没有搜索字符串的行
其中,command 可以是具体的搜索字符串,也可以是正则表达式(需要用引号引起来),常用的有:
1.利用[]搜索集合字符,[] 表示其中的某一个字符 ,例如[ade] 表示a或d或e
2.利用[] 来表示范围,比如[a-z] 表示小写字母,[0-9] 表示0~9的数字, [A-Z] 则是大写字母们。[a-zA-Z0-9]表示所有数字与英文字符
3.^ 表示行的开头,$表示行尾,^ $ 就表示空行,比如,
# 搜索以小写字母开头的行
grep "^[a-z]" filename
# 搜索末尾是.的行,. 是正则表达式的特殊符号,所以要用\转义
grep "\.$" filename #
# 去除空白行和行首为 #的行
grep -v "^$" filename | grep -v ^#
查看文件数量
1、如果只是想得到当前目录下(不包括子目录)的相关文件时用
ll | grep ^- | wc -l
2、如果想得到当前目录下,包括子目录中的相关文件时用
find ./ -type f | wc -l