之前删除所有内容

时间:2017-03-27 18:52:36

标签: bash sed

我有/mnt/c/BashTest/tmp/iostream/mnt/c/BashTest/tmp//mnt/c/BashTest/tmp/iostream这样的字符串,我需要检查字符串中是否有//,如果是,请删除//之前的所有内容(除了一个/)。例如,来自第二个字符串的/mnt/c/BashTest/tmp/

3 个答案:

答案 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