You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Shell命令按条件提取包含//的目标子字符串?

解决方法:提取包含//的目标子串

没问题!我来帮你调整正则或者换用其他工具,轻松拿到你想要的//hostname/path/结果。

方法一:修改grep的Perl正则(最简单直接)

你之前的正则是用正向预查只匹配了/之后的内容,现在我们直接匹配以//开头、直到第一个空格为止的整个串就行:

cat myfile | grep " cifs " | grep -oP '//[^\s]+'

正则解释:

  • //:直接匹配开头的两个斜杠,确保包含目标前缀
  • [^\s]+:匹配所有非空格字符(直到遇到第一个空格停止),正好覆盖你要的路径部分

方法二:用awk处理字段

如果习惯用awk,也可以通过遍历字段的方式提取:

awk '/ cifs / {for(i=1;i<=NF;i++) if($i ~ /^\/\//) print $i}' myfile

逻辑说明:

  1. 先筛选出包含cifs的行
  2. 遍历该行的每个字段(默认以空格分隔)
  3. 找到以//开头的字段,直接打印

方法三:用sed做字符串替换

sed也能通过捕获组实现提取:

sed -n '/ cifs /s/.*\(\/\/[^ ]*\).*/\1/p' myfile

逻辑说明:

  • / cifs /:只处理包含该字符串的行
  • s/.*\(\/\/[^ ]*\).*/\1/:捕获//到第一个空格前的内容,用捕获的内容替换整行
  • -n和p:只打印处理后的行

这样不管//hostname/path/在哪个位置,都能准确提取出包含//的完整子串啦~

内容的提问来源于stack exchange,提问作者Vijesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 12:12:50