使用正規表示式解析字串
通常,使用正規表示式解析複雜結構並不是一個好主意。但這是可以完成的。例如,你可能希望將資料載入到 hive 表中,並且欄位用逗號分隔,但像 array 這樣的複雜型別用“|”分隔。檔案包含所有以逗號分隔的欄位的記錄,複雜型別在方括號內。在這種情況下,這個一次性 Perl 可能就足夠了:
echo "1,2,[3,4,5],5,6,[7,8],[1,2,34],5" | \
perl -ne \
'while( /\[[^,\]]+\,.*\]/ ){
if( /\[([^\]\|]+)\]/){
$text = $1;
$text_to_replace = $text;
$text =~ s/\,/\|/g;
s/$text_to_replace/$text/;
}
} print'
你想要檢查輸出:
1,2,[3 | 4 | 5],5,6-,[7 | 8],[1 | 2 | 34],5