Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 在sed中使用安培和_Regex_Csv_Sed - Fatal编程技术网

Regex 在sed中使用安培和

Regex 在sed中使用安培和,regex,csv,sed,Regex,Csv,Sed,我有一个csv文件,其中包含以下行: Aity Chel Jenni,Hendaland 229,2591 TE Amsterdam sed 's/([1-9] [A-Z]{2}/&,/' file1 >file2 sed -r 's:[0-9] [A-Z]{2}\b:&,:' file > out 我想在自动批处理脚本中为创建一个sed模式,该脚本将此类格式中的信息更改为以下格式: Aity Chel Jenni,Hendaland 30,2591 TE,

我有一个csv文件,其中包含以下行:

Aity Chel Jenni,Hendaland 229,2591 TE Amsterdam
 sed 's/([1-9] [A-Z]{2}/&,/' file1 >file2
sed -r 's:[0-9] [A-Z]{2}\b:&,:' file > out
我想在自动批处理脚本中为创建一个sed模式,该脚本将此类格式中的信息更改为以下格式:

Aity Chel Jenni,Hendaland 30,2591 TE, Amsterdam
通过一些研究,我发现我必须创建一个正则表达式,然后使用一个符号(&)让它改变周围的情况,使用&来定义正则表达式的位置

我尝试了以下方法:

Aity Chel Jenni,Hendaland 229,2591 TE Amsterdam
 sed 's/([1-9] [A-Z]{2}/&,/' file1 >file2
sed -r 's:[0-9] [A-Z]{2}\b:&,:' file > out
并且一直在尝试这种方法的变体,试图降低正则表达式,但它似乎没有改变任何事情

我是在使用符号AND时出错,还是我的正则表达式错了? 通过互联网阅读,我似乎无法理解这个函数,有人能给我一些例子/向我解释如何正确地实现它吗?

你是说

sed 's/([1-9] [A-Z]{2}/&,/' file1 >file2
       ^
但是您不必使用
()
进行捕获即可使用
&
。相反,只要说:

sed 's/[1-9] [A-Z]\{2\}/&,/' file
注意除非使用
-r
,否则需要转义
{}
量词中的元素:

sed -r 's/[1-9] [A-Z]{2}/&,/' file
请尝试以下操作:

Aity Chel Jenni,Hendaland 229,2591 TE Amsterdam
 sed 's/([1-9] [A-Z]{2}/&,/' file1 >file2
sed -r 's:[0-9] [A-Z]{2}\b:&,:' file > out
关于您自己的模式,您缺少右括号。而且,iirc,您需要在sed模式中转义
),以使它们不完全匹配

-r
选项启用了
sed
来使用扩展正则表达式,它提供了
{2}
扩展