等效于头/尾命令以显示头/尾或一条线

时间:2019-04-01 07:21:30

标签: linux bash

用头/尾命令显示头/尾或一条线等效吗?

<>

4 个答案:

答案 0 :(得分:2)

如果您要整个流中的第一个/最后一个字符,则相当于tail$ head -c2 <<<"abcdefghijklmnopqrstuvwxyz" ab<will not output a newline> $ tail -c3 <<<"abcdefghijklmnopqrstuvwxyz" yz<newline>

head

tail将不会输出换行符,因为它仅输出前两个字符。 cut将换行符视为一个字符,因此我们需要输出3以获取最后两个字符。重新格式化命令以采用您的示例中的参数是微不足道的,我将其留给OP。

如果需要每行的第一个字符,可以使用$ cut -c-2 <<<"abcdefghijklmnopqrstuvwxyz"$'\n''second line' ab se

rev | cut | rev

并使用$ rev <<<"abcdefghijklmnopqrstuvwxyz"$'\n''second line' | cut -c-2 | rev yz ne 助记符获取最后一个字符:

{{1}}

如果要输出10个以上的字符,则不能使用cut。是

答案 1 :(得分:0)

您可以使用cut https://linux.die.net/man/1/cut

但是您不需要它,因为我们具有bash子字符串提取功能:

export txt="abcef"
echo head: ${txt:0:2}
echo tail: ${txt: -2}

https://www.tldp.org/LDP/abs/html/string-manipulation.html

答案 2 :(得分:0)

您可以直接使用bash子字符串提取语法,而无需使用外部命令

$ input="abcdefghijklmnopqrstuvwxyz"; echo ${input: -2}
yz
$ input="abcdefghijklmnopqrstuvwxyz"; echo ${input:0:2}
ab

使用sed

echo abcdefghijklmnopqrstuvwxyz | sed -E 's/^(..).*/\1/'; echo abcdefghijklmnopqrstuvwxyz | sed -E 's/^.*(..)$/\1/';
ab
yz

答案 3 :(得分:0)

根据您的发行版,您可以使用cut命令:

头:

echo "Hello! This is a test string." | cut -c1-2

收益率:He


对于尾巴,您基本上执行相同的操作,但是先反转字符串,将其剪切,然后再次反转。

尾巴:

echo "Hello! This is a test string." | rev | cut -c1-2 | rev

收益率:g.


2是要打印的字符数