我在需要编辑的文件中有一个路径,如下所示。 “最新”之后和“/”之前的任何内容都需要包含在比赛中。
/home/test/files/newestaaabbb/the_file.txt
/home/test/files/newest1/the_file.txt
/home/test/files/newest4_8/the_file.txt
都需要成为:
/home/test/files/oldest/the_file.txt
答案 0 :(得分:2)
您可以将sed
与此正则表达式newest[^/]
一起用作搜索模式:
sed 's~newest[^/]*~oldest~' file
/home/test/files/oldest/the_file.txt
/home/test/files/oldest/the_file.txt
/home/test/files/oldest/the_file.txt
PS:对于内联编辑的文件使用:
sed -i.bak 's~newest[^/]*~oldest~' file
答案 1 :(得分:0)
管道穿过awk的另一种方式
awk 'BEGIN{FS="/";OFS="/"}; {if ($(NF-1) ~ "^newest") $(NF-1)="oldest";print}'