【问题标题】:How to remove char from string in bash? [duplicate]如何从bash中的字符串中删除字符? [复制]
【发布时间】:2021-04-17 11:07:07
【问题描述】:

我想从输出中删除字符 |

我的输出来自这些命令:

lnstat -i 3 -s 0 -k entries,in_slow_tot,out_slow_tot > test.txt
tail -2 test.txt
0| 5| 3|
1| 2| 4|

我想要这个输出

0 5 3
1 2 4

这个我已经试过了

grep -v or sed
tail -2 test.txt | sed `|//g`  
tail -2 test.txt | grep -v "|"

但我收到了这个错误:

unknown command: '|'

【问题讨论】:

  • 检查tr 命令
  • 它来自格式错误的sed。尝试tail -2 test.txt | sed 's/|//g',或者按照@giacomo 的建议trtail -2 test.txt | tr -d '|'
  • 从某个输出中删除一个字符是一个经过深入研究的问题,您应该绝对零麻烦地找到该问题的许多解决方案。为什么要在这里问?您是否花时间阅读sed 手册或教程?

标签: linux bash shell


【解决方案1】:

这...

tail -2 test.txt | sed `|//g`

...应该是:

tail -2 test.txt | sed 's/|//g'

这可能是我会做的。请注意,不仅原始版本中的 sed 表达式不正确,而且还使用了错误类型的引号。错误的引号是“未知命令”错误的原因。它们指示 shell 将 |//g 作为命令执行,并将其标准输出插入到 sed 命令行中。

grep 没有提供解决问题的方法——它允许您根据是否匹配模式来过滤行,但它不会转换行的内容。

还有tr,不过,它是“翻译”的助记符。这应理解为字符级翻译,而不是语言翻译。它可以将某些字符翻译为空。特别是:

tail -2 test.txt | tr -d '|'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-26
    • 1970-01-01
    • 2013-07-01
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2014-06-26
    相关资源
    最近更新 更多