我试图删除/
每行之前出现的某些文本。
我有类似的东西:
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"