我有一千个Delphi文件(.pas),我需要从中提取文本。
我需要的文本是在单引号(Pascal字符串)之间,我只需要从特定函数调用的字符串。例如:my_function('这是我需要的字符串')
我已经提取了所有出现该函数的行并使用find和grep添加到文本文件中,但是我无法提取字符串。
我一直在互联网上寻找正则表达式来提取这些字符串,但我不知道如何做到这一点。我正在尝试这个:
sed "s/.*my_function\('(.*)'\).*/\1/" all_the_strings.txt > my_out_file.txt
但它不起作用(我不是正则表达式的专家......)。
你能帮我解决这个问题吗?
答案 0 :(得分:3)
这可能适合你(GNU sed):
sed -nr "s/.*my_function\('([^']*)'\).*/\1/p" all_the_strings.txt > my_out_file.txt
答案 1 :(得分:1)
你可以试试这个:
sed 's/.*my_function(.\(.*\).).*/\1/;'
答案 2 :(得分:0)
您的解决方案不会在正确的位置转出括号。在sed中,它们不是特殊的元字符,因此它们与字面值匹配。
你必须逃避他们进行分组,所以改变正则表达式以逃避内部的,例如:
sed "s/.*my_function('\(.*\)').*/\1/" all_the_strings.txt > my_out_file.txt