Regex 在sed中使用安培和
我有一个csv文件,其中包含以下行: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,
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}
扩展