我的目标是将命令的输出减少到任意数量的字符(让我们使用 6 )。我希望能够将此命令附加到管道的末尾,因此它应该能够使用stdin。
echo "1234567890" | your command here
# desired output: 123456
我检查了awk
,我也注意到bash有一个substr
命令,但我提出的两个解决方案似乎都比他们需要的更长,我无法动摇感觉我错过了一些更容易的东西。
我会发布我发现的两个解决方案作为答案,我欢迎任何批评以及新的解决方案!
找到解决方案,谢谢所有回复的人!
jcollado和Mithrandir之间很接近 - 我将来最终可能会同时使用它们。 Mithrandir的答案是一个实际的子字符串,更容易查看结果,但jcollado的答案让我把它管道到剪贴板,没有EOL字符。
答案 0 :(得分:22)
你想要这样的东西:
echo "1234567890" | cut -b 1-6
答案 1 :(得分:3)
如何使用head -c/--bytes
?
$ echo t9p8uat4ep | head -c 6
t9p8ua
答案 2 :(得分:3)
我想出了:
echo "1234567890" | ( read h; echo ${h:0:6} )
和
echo "1234567890" | awk '{print substr($0,1,6)}'
但两人似乎都在用大锤敲打钉子。
答案 3 :(得分:2)
这可能对您有用:
printf "%.6s" 1234567890
123456
答案 4 :(得分:0)
如果your_command_here
为cat
:
% OUTPUT=t9p8uat4ep
% cat <<<${OUTPUT:0:6}
t9p8ua