删除每行“/”之前的所有内容

删除每行“/”之前的所有内容

我试图删除/每行之前出现的某些文本。

我有类似的东西:

testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123
testing.db.com/8a8589bf-49e3-4cd7-af15-6753067355c6

我只想得到:

7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6 

任何人都可以帮助我使用正则表达式吗?我发现的一切都在删除 /, 不是

答案1

使用cut

$ cut -sd'/' -f2 file.txt   ##This will print only the lines containing /
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6

以下建议假设/在一行中仅出现一次:

使用grep

$ grep -o '[^/]*$' file.txt  ##This will print the lines not having / too
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6

/如果所有行中都有,您也可以使用这些:

使用bash参数扩展:

$ while read line; do echo "${line#*/}"; done <file.txt 
7fad416d-f2b3-4259-b98d-2449957a3123
8a8589bf-49e3-4cd7-af15-6753067355c6

或者python

#!/usr/bin/env python2
with open('file.txt') as f:
    for line in f:
        print line.split('/')[1].rstrip()

请注意,就您的示例而言,上述所有建议都是有效的。

答案2

使用 sed 就足够简单了:

echo "testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123" | sed -e "s/.*\///"

基本语法是“s/search/replace/”,在这里我们搜索.*\/这意味着所有以斜杠结尾的内容(转义),然后我们将其替换为任何内容。

答案3

使用 Perl:

< file.txt perl -pe 's/.*\///'

答案4

使用 sed 的两种方法:

sed -i "s|testing.db.com/||g" file_path_here

或者

echo "testing.db.com/7fad416d-f2b3-4259-b98d-2449957a3123" | sed -e "s|testing.db.com/||g"

相关内容