从管道中抓取字符串的前 [x] 个字符

从管道中抓取字符串的前 [x] 个字符

如果我的命令输出很长(单行),但我知道我只想要输出的前 [x] (假设 8)个字符,那么最简单的方法是什么?没有任何分隔符。

答案1

一种方法是使用cut

 command | cut -c1-8

这将为您提供每行输出的前 8 个字符。由于cut它是 POSIX 的一部分,因此它很可能出现在大多数 Unices 上。

答案2

这些是仅获取前 8 个字符的其他一些方法。

command | head -c8

command | awk '{print substr($0,1,8);exit}' 

command | sed 's/^\(........\).*/\1/;q'

如果你有 bash

var=$(command)
echo ${var:0:8}

答案3

另一种内衬解决方案使用外壳参数扩展

echo ${word:0:x}

EG: word="Hello world"
echo ${word:0:3} or echo ${word::3} 
o/p: Hel


EG.2: word="Hello world"
echo ${word:1:3}
o/p: ell

答案4

这是便携式的:

a="$(command)"             # Get the output of the command.
b="????"                   # as many ? as characters are needed.
echo ${a%"${a#${b}}"}      # select that many chars from $a

构建一个可变长度字符的字符串有这里有它自己的问题

相关内容