加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

将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’????###系统遇到严重错误

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读