我希望 sed省略所有不匹配的行,并且只输出替换的字符串(单个/多个预期行/ s).
换句话说:我有一个干草堆,只想要针回来,而不是所有被搜查的干草,并且保持不变.
或者换句话说:在多行字符串中搜索/替换RegEx描述的字符串,并且只返回该字符串.(因为可以使用PHP函数http://www.php.net/manual/en/function.preg-replace.php)
我目前的解决方法是首先使用grep进行过滤,然后仅将匹配的行传输到sed中进行替换:
echo -e "Bla\nBla\nImportant1: One \nBla\nImportant2: Two\nBla\nBla" | egrep "^Important1.*$" | sed -E "s/^Important1: *\b(.*)\b */\1/g"
# From the multiple line input I only want the "One One" (with pre/post whitespace removed, hence matching the word boundaries with "\b")
# And I want no "Bla bla" lines in the result!
Run Code Online (Sandbox Code Playgroud)
但我想在sed中有一个单一的解决方案.或者这是出于预期的sed用法,我应该更好地使用其他东西吗?顺便说一句,问题:使用反向引用的多线sed似乎有点相关,但我不确定!
问题:
我最近从 macOS Mojave 10.14.6 升级到 macOS Catalina 10.5.5。
现在这zsh是默认的 shell,我将其迁移.bashrc到.zshrc:
~/bin/my/和~/bin/dev/中
zsh: command not found: myScript.sh调查与故障排除:
echo $PATH给出/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/usr/local/sbin:~/bin/bin:~/bin/my:~/bin/dev:实验:
export。--> 没有区别。alias test123="echo test123"