Unix Grep找到一个模式并在同一行中替换
我有一个包含.html文件的文件夹的项目目录。我想找到那些有模式的文件-Unix Grep找到一个模式并在同一行中替换,unix,sed,grep,Unix,Sed,Grep,我有一个包含.html文件的文件夹的项目目录。我想找到那些有模式的文件- 'btn-primary.*{.*Save' 并更换 'btn-primary' word with 'btn-primary Save' 只有在那些方面 我所做的: grep -rl -e 'btn-primary.*{Save' . |xargs sed -i 's/btn-primary/btn-primary Save/g' 这样做: 这找到了所有有这种模式的文件,没关系。然后,sed在所有这些文件上运行,
'btn-primary.*{.*Save'
并更换
'btn-primary' word with 'btn-primary Save'
只有在那些方面
我所做的:
grep -rl -e 'btn-primary.*{Save' . |xargs sed -i 's/btn-primary/btn-primary Save/g'
这样做:
这找到了所有有这种模式的文件,没关系。然后,sed在所有这些文件上运行,并在任何地方用“btn primary save”替换“btn primary”,这不是我想要的
我想要的是:替换那些在“btn主”之后某处有“Save”的行
任何帮助都将不胜感激
问候,,
Rahul你为什么要使用grep?Sed进行模式匹配:
sed -e 's/btn-primary\(.*{.*Save\)/btn-primary Save\1/g'
或:
如果您使用
grep
试图减少sed
将要操作的文件数量,那么如果您认为这样更有效,那就是在愚弄自己。通过这样做,您将只读取一次不匹配的每个文件,但读取两次匹配的每个文件。如果您只使用sed
,则每个文件将只读取一次。为什么要使用grep?Sed进行模式匹配:
sed -e 's/btn-primary\(.*{.*Save\)/btn-primary Save\1/g'
或:
如果您使用grep
试图减少sed
将要操作的文件数量,那么如果您认为这样更有效,那就是在愚弄自己。通过这样做,您将只读取一次不匹配的每个文件,但读取两次匹配的每个文件。如果只使用sed
,则每个文件将只读取一次