转义包含双引号括号的正则表达式的bash变量

时间:2011-10-18 16:27:54

标签: regex bash escaping split

对于正则表达式专业人士来说,这一点显而易见,但我找不到任何方法来实现这一目标。

我想在对与正则表达式匹配的行进行分组后将一个大的sql文件拆分成几个...

所以我得到了一个包含国家代码的数组。 我从国家代码开始有一个包含数千行的700mb文件。 我想根据此国家/地区代码将文件拆分为多个文件。

例如,一行是:

("ZA", "EN", 11564, "ZA-WC", "Western Cape", "West Coast (DC1)", "Swartland", "", "7310", "Moorreesburg", "", "", -33.15528, 18.65639, "Africa/Johannesburg", "UTC+2", "N"),

所以我想匹配("ZA", 我知道如何通过bash grep它,

grep '("ZA"' data.sql

我的问题是当我想用bash脚本进行迭代并将结果封装到var中以将输出重定向到文件时......我偶然发现双引号,括号转义......

#!/bin/bash

country_code_list_path="country_code.txt"
for country_code in $(cat "$country_code_list_path");
do echo $country_code;
result=`grep '^\(\""$country_code"\", ' geodata.sql| tail -1`;
echo $result;
done

这导致错误(或(

任何人都有提示或替代解决方案来实现这一目标吗?

1 个答案:

答案 0 :(得分:0)

有两个错误:

  1. 不评估单引号内的Shell-Variables。

  2. 使用grep

    "^(\"${country_code}" 
    

    匹配字符串。不要逃避( - 字符。

相关问题