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

如何在FreeBSD的tcsh Shell中使用BSD Sed剥离IP地址

FreeBSD tcsh下提取域名的sed解决方案

要从格式为0.0.0.0 域名的文件中提取域名,Linux发行版的sed命令在FreeBSD tcsh中无法直接使用,核心差异在于两者sed的正则语法和选项行为:

  1. FreeBSD sed不支持Linux的-r扩展正则选项,对应的扩展正则选项是-E
  2. FreeBSD sed的-i(原地编辑)选项必须指定备份后缀,若不需要备份需显式传入空字符串(tcsh中要用引号包裹空字符串避免语法错误)

方案一:使用扩展正则(推荐)

sed -Ei '' 's/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+ (.*)$/\1/' domains.txt
  • -E:开启扩展正则,无需转义+、()等字符
  • -i '':原地编辑文件且不生成备份
  • 正则部分:匹配行首的IP地址,捕获后续的域名并替换整行为捕获内容(每行仅一个匹配,无需/g标志)

方案二:使用基础正则

若不想用扩展正则,需对基础正则中的特殊字符转义:

sed -i '' 's/^[0-9]\+\.[0-9]\+\.[0-9]\+\.[0-9]\+ \(.*\)$/\1/' domains.txt
  • 这里\+、\(、\)是基础正则的转义写法,功能与扩展正则一致

补充说明

  • 若需要保留原文件备份,可将-i ''改为-i.bak,执行后会生成domains.txt.bak备份文件
  • tcsh中使用单引号包裹sed脚本,避免shell解析正则中的特殊字符(如$、*)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 12:54:50