使用正则表达式过滤 S3 上以 _$folder$ 结尾的占位文件的方法

 更新时间:2023年12月27日 10:53:24   作者:Laurence  
当我们使用命令行批量从 S3 上拷贝文件或统计文件数量时,希望能排除掉 S3 上以 _$folder$ 结尾的占位文件,这个正则表达式应该怎么写呢,本文给大家介绍使用正则表达式过滤 S3 上以 _$folder$ 结尾的占位文件的方法,感兴趣的朋友一起看看吧

当我们使用命令行批量从 S3 上拷贝文件或统计文件数量时,希望能排除掉 S3 上以 _$folder$ 结尾的占位文件,这个正则表达式应该怎么写呢?

Shell 实现

以下是统计 S3 某个位置下的除 _$folder$ 结尾的文件的文件数量:

aws s3 ls --recursive s3://my-s3-location/ | grep -v '.*_\$folder\$' | wc -l

使用 grep 过滤是比较简单的,因为 grep 有一个 -v,--invert-match 参数:“反向匹配”,即:过滤掉match 上的行。

Java 实现

相较而言,如果是 java 程序,这个正则就很有些难写了,应为 java 正则接口并没有“反向匹配”这种设置,这个 正则要这样写:^(?!.*[_]\$folder\$$).*$,我们以 s3-dist-cp 这个命令为例,它的 --srcPattern 参数就是一个 Java 的正则表达式,用于匹配需要拷贝的文件,如果我们要在拷贝时排除掉 S3 上那些恼人的 _$folder$ 结尾的文件,应该这样写:

nohup s3-dist-cp \
    -Dmapreduce.job.reduces=599 \
    --src=s3://my-hbase-snapshots/usertable-20231205 \
    --dest=hdfs://${SINK_CLUSTER_NAMENODES}:8020/user/hbase/ \
    --srcPattern='^(?!.*[_]\$folder\$$).*$' \
    --multipartUploadChunkSize=1024 &> s3-dist-cp.out &
tail -f s3-dist-cp.out

补充:

正则表达式文本过滤

grep文本过滤

1.grep 默认是按照以行为基本单位进行匹配和显示的。

2.grep默认匹配只要包含模式字符即可

grep -w 是按单词匹配,和普通的匹配不一致

单词的分隔符, 数字加字母加下划线都算做单词的一部分

grep -f p.txt /etc/passwd

匹配显示结果的行号

grep 并且关系和 或者关系

1.并且 grep root /etc/passwd | grep shutdown

2.或者 grep -e root -e shutdown /etc/passwd

正则表达式

1.字符匹配

. 表示一个任意字符 .放在[]里面就表示.本身这个字符

2.匹配次数

某一个字符出现的次数

* 表示*号前面的字符出现的次数是不确定的

3.位置锚定

行首 ^ 不能匹配中间某段字符串的开始

行尾 $ 不能匹配中间某一段字符串的结尾

单词词首 \<root root处于单词的最左侧

单词词尾 root\> root处于单词的最右侧

4.分组

1. echo wangwangwangggww | grep "\(wang\)\{3\}"

2.后向引用

正则表达式和通配符的区别

正则表达式匹配的是文件的内容或者标准输出的字符串,通配符匹配的是文件的名称.两者操作的对象不一致.

匹配字符串问题

shell执行命令的时候,正则表达式是以整个输出作为字符串内容,包括看不到的空格符号。

有些命令结果会输出一个或者多个空格,有些命令不会输出空格.

1.在表达式中()符号前面和{}括号前面都必须要加上\(\) 和 \{\}.

grep "^\(.*\):.*\1$" /etc/passwd

2.正则表达式默认从字符串的最前面开始查找,但是如果锚定的是行尾,那么正则会从尾部开始查找

1.从尾部开始查找

2.从头部开始查找

3.分组实例

第一分组匹配到的字符串是7,最后面的[0-9]*\1 表示匹配到以7结尾而且7前面可以包含任意个数字的数字

基本正则和扩展正则的区别

1.基本正则语法 小括号和大括号前面需要加上\符号做转义

grep -w "[0-9]\{2,3\}" /etc/passwd

2.扩展正则 小括号和大括号前面不要加上转义字符

grep -Ew "[0-9]{2,3}" /etc/passwd

egrep -w "[0-9]{2,3}" /etc/passwd

到此这篇关于正则表达式:过滤 S3 上以 _$folder$ 结尾的占位文件的文章就介绍到这了,更多相关正则表达式过滤占位文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python 正则表达式匹配数字及字符串中的纯数字

    Python 正则表达式匹配数字及字符串中的纯数字

    这篇文章主要介绍了Python 正则表达式匹配数字及使用正则表达式找出字符串中的纯数字,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • js正则表达式验证URL函数代码(方便多个正则对比)

    js正则表达式验证URL函数代码(方便多个正则对比)

    下面是一段相对全面的用例测试,可以考虑使用,当然,如果你的要求很简单,用网上传的各种简单版,cover到自己的用例就好。
    2016-10-10
  • 正则表达式环视概念与用法分析

    正则表达式环视概念与用法分析

    这篇文章主要介绍了正则表达式环视概念与用法,具体分析了环视的概念、分类、使用方法及相关注意事项,需要的朋友可以参考下
    2017-06-06
  • JavaScript 实现基础 正则表达式

    JavaScript 实现基础 正则表达式

    正则表达式用来从某一段字符串中匹配所需要的字符,这些字符可以非常简单,也可以非常复杂。JavaScript生来就对正则表达式有着良好的支持,在网络的字符搜索匹配中发挥着重要的作用。
    2009-08-08
  • 使用正则表达式判断密码强弱

    使用正则表达式判断密码强弱

    本文给大家分享使用正则表达式来判断密码强弱的实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下吧
    2017-06-06
  • JS正则表达式验证数字(非常全)

    JS正则表达式验证数字(非常全)

    正则表达式,又称规则表达式,在项目中经常会用到正则表达式,今天小编抽空给大家分享js正则表达式验证数字的方法,感兴趣的朋友参考下吧
    2016-12-12
  • 匹配数字小数和逗号的正则表达式

    匹配数字小数和逗号的正则表达式

    这篇文章主要为大家介绍了匹配数字小数和逗号的正则表达式详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10
  • python中使用正则表达式将所有符合条件的字段全部提取出来

    python中使用正则表达式将所有符合条件的字段全部提取出来

    这篇文章主要介绍了python中使用正则表达式将所有符合条件的字段全部提取出来,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • js去掉首位空格的正则表达式

    js去掉首位空格的正则表达式

    去掉首位空格的方法有很多,在本文为大家介绍下使用正则表达式来完成,具体写法如下,喜欢的朋友可以参考下
    2013-11-11
  • 常用正则表达式之密码格式验证大全

    常用正则表达式之密码格式验证大全

    如果密码中只包含数字,那么该密码是非常简单,当然它的安全性也相对较差,下面这篇文章主要给大家介绍了关于常用正则表达式之密码格式验证大全的相关资料,需要的朋友可以参考下
    2022-02-02

最新评论