将stdin和管道打到sed似乎不起作用
发布时间:2020-12-13 23:06:02 所属栏目:Linux 来源:网络整理
导读:我正在尝试过滤和替换标准输入,以便仅捕获针对我的风格调整的特定字符串.例如,假设标准输入字符串是 "KB: the system ran into a critical error" 然后我将grep这一行,将“KB:”改为“###”,然后输出到STDOUT这样 "### the system ran into a critical erro
我正在尝试过滤和替换标准输入,以便仅捕获针对我的风格调整的特定字符串.例如,假设标准输入字符串是
"KB: the system ran into a critical error" 然后我将grep这一行,将“KB:”改为“###”,然后输出到STDOUT这样 "### the system ran into a critical error" 我试过Fedora 12(实际上还有很多其他的) $grep "KB:" - | sed -e 's/KB:/###/g' KB: the system ran into a critical error <--- This is what I typed in manually. <--- Nothing is printed 我创建了一个文本文件text.txt,它包含相同的示例字符串,然后从文件中读取grep,如: $grep "KB:" text.txt | sed -e 's/KB:/###/g' ### the system ran into a critical error <--- Correctly displayed $ 从grep / sed的内部看到的差异以及为什么STDIN方法不起作用?而不是听说使用xargs等替代品,我想知道为什么我的尝试应该失败. 解决方法
这对我有用:
echo“KB:系统遇到严重错误”| grep“KB:”| sed -e’s / KB:/ ### / g’ 请注意在grep命令中排除 – 字符. 使用grep在这里没用.您可以将代码缩小到大小: echo“KB:系统遇到严重错误”| sed -e’s / KB:/ ### / g’????###系统遇到严重错误 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |