在我的一个网站上修改了URLS后,我对它们感到头疼。URL很长,我决定修改它们,尽管后来通过.htacces进行了更改.
我正在逐个改变(我有1500多个网址.)
我有这个:
Redirect 301 /noticies/festes-noticies/diania-roda-les-aixames-la-nit-de-nadal/这就变成:
Redirect 301 /noticies/festes-noticies/diania-roda-les-aixames-la-nit-de-nadal/ /diania-roda-les-aixames-la-nit-de-nadal/最后一个/-----/放在行的末尾,有一个空格。
有一个使用sed或其他命令的方法可以很容易地做到这一点吗?
发布于 2020-11-15 07:18:05
sed是强制性的吗?
awk -F/ '{printf "%s /%s/\n",$0,$(NF-1)}' old_file > new_file仅适用于重定向和重写完整文件的行。
awk -F/ '$1 ~ /Redirect/ {printf "%s /%s/\n",$0,$(NF-1); next ; } {print}' old_file > new_file哪里
-F/告诉awk使用/作为字段分隔符$0,$(NF-1)是整条线,在最后一个字段之前$1 ~ /Redirect/选择行next转到下一行{print}不匹配Redirect行的隐式打印编辑:如果原始行以一个/尾声结束,我们需要在最后一个字段之前选择.
注意,一些awk可以在适当的地方进行编辑(awk -i);但是,我建议您保留原始文件并将版本应用于新文件,如果您对结果感到满意,可以重命名它。
发布于 2020-11-15 09:48:53
使用sed:
< input_file sed -E 's#((/[^/]*){2})$#\1 \1#' > output_file/[^/]*匹配一个斜杠,后面跟着零个或多个字符,没有斜杠。(){2}的意思是将表达式插入括号中两次。$与行尾匹配。()允许将作为\1的内部重用到替换部分中。# )也被用作分隔符,用于此替换,以方便使用。-E支持ERE。https://unix.stackexchange.com/questions/619701
复制相似问题