我有/mnt/c/BashTest/tmp/iostream
和/mnt/c/BashTest/tmp//mnt/c/BashTest/tmp/iostream
这样的字符串,我需要检查字符串中是否有//
,如果是,请删除//
之前的所有内容(除了一个/
)。例如,来自第二个字符串的/mnt/c/BashTest/tmp/
。
答案 0 :(得分:1)
我建议使用GNU sed的正则表达式:
sed 's|.*//|/|' file
如果你想编辑你的文件"就地"使用sed的选项-i
。
答案 1 :(得分:1)
如果字符串包含在变量中,则可以使用parameter expansion:
$ str=/mnt/c/BashTest/tmp//mnt/c/BashTest/tmp/iostream
$ echo "${str/*\/\//\/}"
/mnt/c/BashTest/tmp/iostream
由于\/
转义,它有点笨拙,但归结为"替换*//
的第一个实例(所有内容包括//
)一个/
"。
答案 2 :(得分:0)
如果您想尝试使用grep
:
grep -oP '(?<=/)/.*' file