Bash子串与管道和标准输入

Nic*_*son 14 bash

我的目标是将命令的输出减少到任意数量的字符(让我们使用6).我希望能够将此命令附加到管道的末尾,因此它应该能够只使用stdin.

echo "1234567890" | your command here 
# desired output: 123456
Run Code Online (Sandbox Code Playgroud)

我检查了一下awk,我也注意到bash有一个substr命令,但我提出的两个解决方案看起来都比他们需要的时间长,而且我无法摆脱我错过更容易的感觉.

我将发布我找到的两个解决方案作为答案,我欢迎任何批评和新解决方案!


找到解决方案,谢谢所有回复的人!

jcollado和Mithrandir之间很接近 - 我将来最终可能会同时使用它们.Mithrandir的答案是一个实际的子字符串,更容易查看结果,但jcollado的答案让我把它管道到剪贴板,没有EOL字符.

Mit*_*dir 24

你想要这样的东西:

echo "1234567890" | cut -b 1-6
Run Code Online (Sandbox Code Playgroud)

  • 有趣的是你如何凭直觉回答:“我的目标是削减......”。 (2认同)

jco*_*ado 6

怎么用head -c/--bytes

$ echo t9p8uat4ep | head -c 6
t9p8ua
Run Code Online (Sandbox Code Playgroud)


Nic*_*son 6

我想出了:

echo "1234567890" | ( read h; echo ${h:0:6} )
Run Code Online (Sandbox Code Playgroud)

echo "1234567890" | awk '{print substr($0,1,6)}'
Run Code Online (Sandbox Code Playgroud)

但两者都像是我在用大锤敲钉子。