grep
# 文件中查找grep [-cinvABC] 'word/regex' filename# 目录中查找grep -r 'word/regex' ./folder
-c :打印符合要求的行数
-i :忽略大小写
-n :在输出符合要求的行的同时连同行号一起输出
-v :打印不符合要求的行
-A :后跟一个数字(有无空格都可以),例如 A2则表示打印符合要求的行以及下面两行
-B :后跟一个数字,例如 B2 则表示打印符合要求的行以及上面两行
-C :后跟一个数字,例如 C2 则表示打印符合要求的行以及上下各两行
-r:目录中递归查找
egrep
egrep = grep -E
可与ls连用,来过滤文件
分步解析命令
aws s3 ls s3://tmes-ci/tmes-deployment/|egrep "[0-9]{5}"|tail -n 1|awk -F ' ' '{print $2}'|sed 's/.$//'
1. ls
aws s3 ls s3://tmes-ci/tmes-deployment/
2. ls + egrep
aws s3 ls s3://tmes-ci/tmes-deployment/|egrep "[0-9]{5}"
3. ls + egrep + tail
aws s3 ls s3://tmes-ci/tmes-deployment/|egrep "[0-9]{5}"|tail -n 1
找出由数字作为文件名的所有目录后,取出最后一行。
tail -n number:表示取出最后number行。
4. ls + egrep + tail + awk
aws s3 ls s3://tmes-ci/tmes-deployment/|egrep "[0-9]{5}"|tail -n 1|awk -F ' ' '{print $2}'# 或者aws s3 ls s3://tmes-ci/tmes-deployment/|egrep "[0-9]{5}"|tail -n 1|awk '{print $2}'
取出最后一行后,以空格为分隔符,将其切片,然后取出第二个切片, 即 10346/。
awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。
awk工作流程是这样的:
读入有’\n’换行符分割的一条记录,然后将记录按指定的域分隔符划分域,填充域。
$0则表示所有域
$1表示第一个域
$n表示第n个域。
默认域分隔符是”空白键” 或 “[tab]键”。可以通过 -F 指定分隔符。
5. ls + egrep + tail + awk + sed
aws s3 ls s3://tmes-ci/tmes-deployment/|egrep "[0-9]{5}"|tail -n 1|awk -F ' ' '{print $2}'|sed 's/.$//'
最后用sed命令把行尾的/和换行符替换掉。
.$是删除\n之前的最后一个字符 、因为.代表除了\n之外所有的字符
sed 's/要被取代的字串/新的字串/g'
