Macos 如何在分隔符文本文件中搜索和删除图案

Macos 如何在分隔符文本文件中搜索和删除图案,macos,sed,awk,grep,delimiter,Macos,Sed,Awk,Grep,Delimiter,我有以下案文: s:50:“index.php?附件=$matches[1]&cpage=$matches[2]”;s:44:“(雇主条款)/trackback/?$”;s:35:“index.php?pagename=$matches[1]&tb=1”;s:71:“(雇主的条款条件)/feed/(feed | rdf | rss | rss2 | atom | jobman)/?$”;s:47:“index.php?pagename=$matches[1]&提要=$matches[2]”;s:

我有以下案文:

s:50:“index.php?附件=$matches[1]&cpage=$matches[2]”;s:44:“(雇主条款)/trackback/?$”;s:35:“index.php?pagename=$matches[1]&tb=1”;s:71:“(雇主的条款条件)/feed/(feed | rdf | rss | rss2 | atom | jobman)/?$”;s:47:“index.php?pagename=$matches[1]&提要=$matches[2]”;s:66:“(雇主条款)/(feed | rdf | rss | rss2 | atom | jobman)/?$”;s:47:“index.php?pagename=$matches[1]&提要=$matches[2]”;s:52:“(雇主的条款条件)/page/?([0-9]{1,})/?$”;s:48:“index.php?pagename=$matches[1]&paged=$matches[2]”;s:59:“(雇主条款)/评论页-([0-9]{1,})/?$”;s:48:“index.php?pagename=$matches[1]&cpage=$matches[2]”;s:44:“(雇主条款)(/[0-9]+)?/?$”;s:47:“index.php?pagename=$matches[1]&page=$matches[2]”;s:26:“主页/附件/([^/]+)/?$”;s:32:“index.php?附件=$matches[1]”;s:36:“主页/附件/([^/]+)/trackback/?$”;s:37:“index.php?附件=$matches[1]&tb=1”;s:63:“主页/附件/([^/]+)/feed/(feed | rdf | rss | rss2 | atom | jobman)/?$”;s:49:“index.php?附件=$matches[1]&提要=$matches[2]”;s:58:“主页/附件/([^/])/(提要| rdf | rss | rss2 |原子|作业员)/?$”


我想做的是搜索jobman这个词并删除找到这个词的整个条目。每个条目的分隔符是分号“;”。我需要从Mac OS命令行执行此操作。所以我有grep、fgrep和awk等工具可用

首先,我们需要从文本中删除什么

$> grep -o -P "[^;]*jobman[^;]*;" ./text 
s:71:"(term-conditions-for-employers)/feed/(feed|rdf|rss|rss2|atom|jobman)/?$";
s:66:"(term-conditions-for-employers)/(feed|rdf|rss|rss2|atom|jobman)/?$";
s:63:"home/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom|jobman)/?$";
s:58:"home/attachment/([^/]+)/(feed|rdf|rss|rss2|atom|jobman)/?$";
如果它是正确的,那么

$> sed "s/[^;]*jobman[^;]*;//g" ./text 
s:50:"index.php?attachment=$matches[1]&cpage=$matches[2]";s:44:"(term-conditions-for-employers)/trackback/?$";s:35:"index.php?pagename=$matches[1]&tb=1";s:47:"index.php?pagename=$matches[1]&feed=$matches[2]";s:47:"index.php?pagename=$matches[1]&feed=$matches[2]";s:52:"(term-conditions-for-employers)/page/?([0-9]{1,})/?$";s:48:"index.php?pagename=$matches[1]&paged=$matches[2]";s:59:"(term-conditions-for-employers)/comment-page-([0-9]{1,})/?$";s:48:"index.php?pagename=$matches[1]&cpage=$matches[2]";s:44:"(term-conditions-for-employers)(/[0-9]+)?/?$";s:47:"index.php?pagename=$matches[1]&page=$matches[2]";s:26:"home/attachment/([^/]+)/?$";s:32:"index.php?attachment=$matches[1]";s:36:"home/attachment/([^/]+)/trackback/?$";s:37:"index.php?attachment=$matches[1]&tb=1";s:49:"index.php?attachment=$matches[1]&feed=$matches[2]";
我们在
“s/[^;]*jobman[^;]*;//g”中实际做的是搜索
[^;]*jobman[^;]*一组符号(不是
任何时间,
作业人员
,不是
任何时间和;)。然后我们将其替换为“”。并对所有文本行进行替换