欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用正則表達式過濾 S3 上以 _$folder$ 結(jié)尾的占位文件的方法

 更新時間:2023年12月27日 10:53:24   作者:Laurence  
當(dāng)我們使用命令行批量從 S3 上拷貝文件或統(tǒng)計文件數(shù)量時,希望能排除掉 S3 上以 _$folder$ 結(jié)尾的占位文件,這個正則表達式應(yīng)該怎么寫呢,本文給大家介紹使用正則表達式過濾 S3 上以 _$folder$ 結(jié)尾的占位文件的方法,感興趣的朋友一起看看吧

當(dāng)我們使用命令行批量從 S3 上拷貝文件或統(tǒng)計文件數(shù)量時,希望能排除掉 S3 上以 _$folder$ 結(jié)尾的占位文件,這個正則表達式應(yīng)該怎么寫呢?

Shell 實現(xiàn)

以下是統(tǒng)計 S3 某個位置下的除 _$folder$ 結(jié)尾的文件的文件數(shù)量:

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

使用 grep 過濾是比較簡單的,因為 grep 有一個 -v,--invert-match 參數(shù):“反向匹配”,即:過濾掉match 上的行。

Java 實現(xiàn)

相較而言,如果是 java 程序,這個正則就很有些難寫了,應(yīng)為 java 正則接口并沒有“反向匹配”這種設(shè)置,這個 正則要這樣寫:^(?!.*[_]\$folder\$$).*$,我們以 s3-dist-cp 這個命令為例,它的 --srcPattern 參數(shù)就是一個 Java 的正則表達式,用于匹配需要拷貝的文件,如果我們要在拷貝時排除掉 S3 上那些惱人的 _$folder$ 結(jié)尾的文件,應(yīng)該這樣寫:

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 是按單詞匹配,和普通的匹配不一致

單詞的分隔符, 數(shù)字加字母加下劃線都算做單詞的一部分

grep -f p.txt /etc/passwd

匹配顯示結(jié)果的行號

grep 并且關(guān)系和 或者關(guān)系

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

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

正則表達式

1.字符匹配

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

2.匹配次數(shù)

某一個字符出現(xiàn)的次數(shù)

* 表示*號前面的字符出現(xiàn)的次數(shù)是不確定的

3.位置錨定

行首 ^ 不能匹配中間某段字符串的開始

行尾 $ 不能匹配中間某一段字符串的結(jié)尾

單詞詞首 \<root root處于單詞的最左側(cè)

單詞詞尾 root\> root處于單詞的最右側(cè)

4.分組

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

2.后向引用

正則表達式和通配符的區(qū)別

正則表達式匹配的是文件的內(nèi)容或者標(biāo)準(zhǔn)輸出的字符串,通配符匹配的是文件的名稱.兩者操作的對象不一致.

匹配字符串問題

shell執(zhí)行命令的時候,正則表達式是以整個輸出作為字符串內(nèi)容,包括看不到的空格符號。

有些命令結(jié)果會輸出一個或者多個空格,有些命令不會輸出空格.

1.在表達式中()符號前面和{}括號前面都必須要加上\(\) 和 \{\}.

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

2.正則表達式默認從字符串的最前面開始查找,但是如果錨定的是行尾,那么正則會從尾部開始查找

1.從尾部開始查找

2.從頭部開始查找

3.分組實例

第一分組匹配到的字符串是7,最后面的[0-9]*\1 表示匹配到以7結(jié)尾而且7前面可以包含任意個數(shù)字的數(shù)字

基本正則和擴展正則的區(qū)別

1.基本正則語法 小括號和大括號前面需要加上\符號做轉(zhuǎn)義

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

2.擴展正則 小括號和大括號前面不要加上轉(zhuǎn)義字符

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

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

到此這篇關(guān)于正則表達式:過濾 S3 上以 _$folder$ 結(jié)尾的占位文件的文章就介紹到這了,更多相關(guān)正則表達式過濾占位文件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論