在linux文件中用字符串替换字符串模式

在linux文件中用字符串替换字符串模式,linux,shell,unix,sed,Linux,Shell,Unix,Sed,我是Linux的新手。需要更换 /en/family/bitstream/ambiance-bt /en/family/zxcvbn/bernhard-fashion /en/family/qwerty/century-751 /en/family/abcd/century-expanded /en/family/xyz/charter-bt /en/fonts/sdfsd/dsfsdfs 与 使用sed或其他方法。尝试以下命令: sed 's/pattern_to_replace/strin

我是Linux的新手。需要更换

/en/family/bitstream/ambiance-bt
/en/family/zxcvbn/bernhard-fashion
/en/family/qwerty/century-751
/en/family/abcd/century-expanded
/en/family/xyz/charter-bt
/en/fonts/sdfsd/dsfsdfs

使用sed或其他方法。

尝试以下命令:

sed 's/pattern_to_replace/string_to_insert/' yourfile
我不给你们更精确的例子,因为我不明白你们想替换什么

Edit1,在您第一次发表评论之后:


如果您的文件内容看起来确实像:

/en/family/bitstream/ambiance-bt
/en/family/zxcvbn/bernhard-fashion
/en/family/qwerty/century-751
/en/family/abcd/century-expanded
/en/family/xyz/charter-bt
/en/fonts/sdfsd/dsfsdfs
使用以下sed表达式获得预期输出:

sed  's/\/en\/family\/\*.*/\/en\/family/' yourfilename 
若要永久更改文件名,请使用下面的sed表达式

sed -i 's/\/en\/family\/*.*/\/en\/family/' yourfilename   

向我提供所需结果的命令是:

sed  's/\/en\/family\/\.*.*/FamilyPage/' filename

在/en/family/******之后,模式_to_replace正在更改。ajay需要删除诸如/bitstream/ambiance bt之类的结束部分,但是上述命令仅替换起始部分,其余部分保持不变。OVE命令将所有行起始部分替换为/en/family/,并将其替换为FamilyPage。您需要保留“.*”以匹配行尾。根据您的示例,此命令应适用于sed的@/en/family.@/en/family@“yourfile。请分别替换每个文件。可能重复的请避免向我提供多次询问和回答的codez问题,您必须努力避免找到答案。另请参见为什么在模式正则表达式中使用“*.*”?“*”是否足够否?如果您使用*则它不会替换/en/family中的整行,它将为您提供输出/en/familybitstream/ambiance bt,根据问题,这是不需要的。是的,抱歉,“*”是必需的。但是你的命令是错误的,你什么都不匹配。试试看。这是因为你的“*”在“*”之前。当替换的文本也包含“/”时,使用“/”分隔替换命令的字段是一个坏主意。这使得命令无法读取,并导致一些错误,例如您的错误。我尝试了sed表达式,但没有给出所需的结果。
sed -i 's/\/en\/family\/*.*/\/en\/family/' yourfilename   
sed  's/\/en\/family\/\.*.*/FamilyPage/' filename