我一开始就说我在shell脚本上很新,所以请不要开枪!)
我有一个包含以下文本的文件:
1 : /
2 : /string-1/
4 : /string-2/
5 : /string-3/我喜欢删除字符串的末尾斜杠,结果应该是:
1 : /
2 : string-1
4 : string-2
5 : string-3我已经尝试使用sed,如下所示:
local_export_folder="/home/merianos/Documents/repositories/DatabaseBackup/tmp"
sed -i -e 's/\/([^\/]+)\//\1/' ${local_export_folder}/blogs.csv但这不管用。
我做错什么了吗?
发布于 2014-12-29 14:24:38
这对我来说很管用:
sed 's#/\([^/]*\)/#\1#' file这捕获了两个正斜杠之间的任何内容。替换是内容,没有斜杠。
您可能一直面临的一个问题是,+ (一个或多个)并不能为sed的所有版本所理解。我已经把它改成了* (意思是零或更多),它得到了更广泛的认可。如果您愿意,可以使用符合POSIX的\{1,\}来表示一个或多个。
输出:
$ sed 's#/\([^/]*\)/#\1#' file
1 : /
2 : string-1
4 : string-2
5 : string-3根据您的sed版本,您可能可以使用-r或-E开关来启用扩展正则表达式。这意味着,不需要将括号作为捕获组使用转义,并且可以理解+:
sed -r 's#/([^/]+)/#\1#' filehttps://stackoverflow.com/questions/27690469
复制相似问题