Grabbing the first [x] characters for a string from a pipe
Clash Royale CLAN TAG#URR8PPP
up vote
47
down vote
favorite
If I have really long output from a command (single line) but I know I only want the first [x] (let's say 8) characters of the output, what's the easiest way to get that? There aren't any delimiters.
command-line shell text-processing
add a comment |
up vote
47
down vote
favorite
If I have really long output from a command (single line) but I know I only want the first [x] (let's say 8) characters of the output, what's the easiest way to get that? There aren't any delimiters.
command-line shell text-processing
related: stackoverflow.com/questions/1405611/…
– Ciro Santilli 新疆改造中心 六四事件 法轮功
Aug 7 at 6:43
add a comment |
up vote
47
down vote
favorite
up vote
47
down vote
favorite
If I have really long output from a command (single line) but I know I only want the first [x] (let's say 8) characters of the output, what's the easiest way to get that? There aren't any delimiters.
command-line shell text-processing
If I have really long output from a command (single line) but I know I only want the first [x] (let's say 8) characters of the output, what's the easiest way to get that? There aren't any delimiters.
command-line shell text-processing
command-line shell text-processing
edited Oct 24 '10 at 3:24
asked Oct 23 '10 at 23:07
xenoterracide
25.2k52157221
25.2k52157221
related: stackoverflow.com/questions/1405611/…
– Ciro Santilli 新疆改造中心 六四事件 法轮功
Aug 7 at 6:43
add a comment |
related: stackoverflow.com/questions/1405611/…
– Ciro Santilli 新疆改造中心 六四事件 法轮功
Aug 7 at 6:43
related: stackoverflow.com/questions/1405611/…
– Ciro Santilli 新疆改造中心 六四事件 法轮功
Aug 7 at 6:43
related: stackoverflow.com/questions/1405611/…
– Ciro Santilli 新疆改造中心 六四事件 法轮功
Aug 7 at 6:43
add a comment |
6 Answers
6
active
oldest
votes
up vote
64
down vote
accepted
One way is to use cut
:
command | cut -c1-8
This will give you the first 8 characters of each line of output. Since cut
is part of POSIX, it is likely to be on most Unices.
2
Note thatcut -c
selects characters;cut -b
orhead -c
selects bytes. This makes a difference in some locales (in practice, when using UTF-8).
– Gilles
Oct 24 '10 at 22:07
You also don't have to specify the start index in this case. Sayingcut -c-8
will select from character 1 to 8.
– Sparhawk
May 9 '14 at 5:08
@Steven,cut
's equivalent on Windows is?
– Pacerier
Aug 25 '15 at 13:06
Alsocommand | dd bs=8 count=1 2>/dev/null
. Not saying it's shorter or superior. Just another alternative.
– dubiousjim
Sep 24 '15 at 3:50
@Gilles, but note that with current versions of GNUcut
,cut -c
works likecut -b
(that is, it doesn't work properly for multi-byte characters).
– Stéphane Chazelas
Aug 9 '16 at 13:49
add a comment |
up vote
22
down vote
These are some other ways to get only first 8 characters.
command | head -c8
command | awk 'print substr($0,1,8);exit'
command | sed 's/^(........).*/1/;q'
And if you have bash
var=$(command)
echo $var:0:8
1
I think the following sed formulation is a bit easier to read:command | sed 's/(.8).*/1/'
or if your sed supports it:command | sed -r 's/(.8).*/1/'
; Otherwise, +1
– Steven D
Oct 24 '10 at 4:48
Good stuff, but note thathead -c
counts bytes, not characters. Similarly, among the major Awk implementations, only GNU awk handles multi-byte characters correctly - FreeBSD Awk and Mawk do not.
– mklement0
Jul 5 '15 at 17:30
add a comment |
up vote
1
down vote
If you have a sufficiently advanced shell (for example, the following will work in Bash, not sure about dash), you can do:
read -n8 -d$'' -r <(command)
After executing read ... <(command)
, your characters will be in the shell variable REPLY
. Type help read
to learn about other options.
Explanation: the -n8
argument to read
says that we want up to 8 characters. The -d$''
says read until a null, rather than to a newline. This way the read will continue for 8 characters even if one of the earlier characters is a newline (but not if its a null). An alternative to -n8 -d$''
is to use -N8
, which reads for exactly 8 characters or until the stdin reaches EOF. No delimiter is honored. That probably fits your needs better, but I don't know offhand how many shells have a read that honors -N
as opposed to honoring -n
and -d
. Continuing with the explanation: -r
says ignore -escapes, so that, for example, we treat
\
as two characters, rather than as a single .
Finally, we do read ... <(command)
rather than command | read ...
because in the second form, the read is executed in a subshell which is then immediately exited, losing the information you just read.
Another option is to do all your processing inside the subshell. For example:
$ echo abcdefghijklm | read -n8 -d$'' -r; printf "REPLY=<%s>n" "$REPLY";
REPLY=<abcdefgh>
1
If you just want to output the 8 chars, and don't need to process them in the shell, then just usecut
.
– dubiousjim
Sep 8 '12 at 14:04
Good to know aboutread -n <num>
; small caveat: Bash 3.x (still current on OS) mistakenly interprets<num>
as a byte count and thus fails with multi-byte characters; this has been fixed in Bash 4.x.
– mklement0
Jul 6 '15 at 1:41
add a comment |
up vote
1
down vote
This is portable:
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
To build a string of variable length of characters has its own question here.
add a comment |
up vote
0
down vote
I had this problem when manually generating checksum files in maven repository.
Unfortunately cut -c
always prints out a newline at the end of output.
To suppress that I use xxd
:
command | xxd -l$BYTES | xxd -r
It outputs exactly $BYTES
bytes, unless the command
's output is shorter, then exactly that output.
add a comment |
up vote
0
down vote
Another one liner solution by using parameter expansion
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
add a comment |
6 Answers
6
active
oldest
votes
6 Answers
6
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
64
down vote
accepted
One way is to use cut
:
command | cut -c1-8
This will give you the first 8 characters of each line of output. Since cut
is part of POSIX, it is likely to be on most Unices.
2
Note thatcut -c
selects characters;cut -b
orhead -c
selects bytes. This makes a difference in some locales (in practice, when using UTF-8).
– Gilles
Oct 24 '10 at 22:07
You also don't have to specify the start index in this case. Sayingcut -c-8
will select from character 1 to 8.
– Sparhawk
May 9 '14 at 5:08
@Steven,cut
's equivalent on Windows is?
– Pacerier
Aug 25 '15 at 13:06
Alsocommand | dd bs=8 count=1 2>/dev/null
. Not saying it's shorter or superior. Just another alternative.
– dubiousjim
Sep 24 '15 at 3:50
@Gilles, but note that with current versions of GNUcut
,cut -c
works likecut -b
(that is, it doesn't work properly for multi-byte characters).
– Stéphane Chazelas
Aug 9 '16 at 13:49
add a comment |
up vote
64
down vote
accepted
One way is to use cut
:
command | cut -c1-8
This will give you the first 8 characters of each line of output. Since cut
is part of POSIX, it is likely to be on most Unices.
2
Note thatcut -c
selects characters;cut -b
orhead -c
selects bytes. This makes a difference in some locales (in practice, when using UTF-8).
– Gilles
Oct 24 '10 at 22:07
You also don't have to specify the start index in this case. Sayingcut -c-8
will select from character 1 to 8.
– Sparhawk
May 9 '14 at 5:08
@Steven,cut
's equivalent on Windows is?
– Pacerier
Aug 25 '15 at 13:06
Alsocommand | dd bs=8 count=1 2>/dev/null
. Not saying it's shorter or superior. Just another alternative.
– dubiousjim
Sep 24 '15 at 3:50
@Gilles, but note that with current versions of GNUcut
,cut -c
works likecut -b
(that is, it doesn't work properly for multi-byte characters).
– Stéphane Chazelas
Aug 9 '16 at 13:49
add a comment |
up vote
64
down vote
accepted
up vote
64
down vote
accepted
One way is to use cut
:
command | cut -c1-8
This will give you the first 8 characters of each line of output. Since cut
is part of POSIX, it is likely to be on most Unices.
One way is to use cut
:
command | cut -c1-8
This will give you the first 8 characters of each line of output. Since cut
is part of POSIX, it is likely to be on most Unices.
answered Oct 23 '10 at 23:20
Steven D
31.6k696108
31.6k696108
2
Note thatcut -c
selects characters;cut -b
orhead -c
selects bytes. This makes a difference in some locales (in practice, when using UTF-8).
– Gilles
Oct 24 '10 at 22:07
You also don't have to specify the start index in this case. Sayingcut -c-8
will select from character 1 to 8.
– Sparhawk
May 9 '14 at 5:08
@Steven,cut
's equivalent on Windows is?
– Pacerier
Aug 25 '15 at 13:06
Alsocommand | dd bs=8 count=1 2>/dev/null
. Not saying it's shorter or superior. Just another alternative.
– dubiousjim
Sep 24 '15 at 3:50
@Gilles, but note that with current versions of GNUcut
,cut -c
works likecut -b
(that is, it doesn't work properly for multi-byte characters).
– Stéphane Chazelas
Aug 9 '16 at 13:49
add a comment |
2
Note thatcut -c
selects characters;cut -b
orhead -c
selects bytes. This makes a difference in some locales (in practice, when using UTF-8).
– Gilles
Oct 24 '10 at 22:07
You also don't have to specify the start index in this case. Sayingcut -c-8
will select from character 1 to 8.
– Sparhawk
May 9 '14 at 5:08
@Steven,cut
's equivalent on Windows is?
– Pacerier
Aug 25 '15 at 13:06
Alsocommand | dd bs=8 count=1 2>/dev/null
. Not saying it's shorter or superior. Just another alternative.
– dubiousjim
Sep 24 '15 at 3:50
@Gilles, but note that with current versions of GNUcut
,cut -c
works likecut -b
(that is, it doesn't work properly for multi-byte characters).
– Stéphane Chazelas
Aug 9 '16 at 13:49
2
2
Note that
cut -c
selects characters; cut -b
or head -c
selects bytes. This makes a difference in some locales (in practice, when using UTF-8).– Gilles
Oct 24 '10 at 22:07
Note that
cut -c
selects characters; cut -b
or head -c
selects bytes. This makes a difference in some locales (in practice, when using UTF-8).– Gilles
Oct 24 '10 at 22:07
You also don't have to specify the start index in this case. Saying
cut -c-8
will select from character 1 to 8.– Sparhawk
May 9 '14 at 5:08
You also don't have to specify the start index in this case. Saying
cut -c-8
will select from character 1 to 8.– Sparhawk
May 9 '14 at 5:08
@Steven,
cut
's equivalent on Windows is?– Pacerier
Aug 25 '15 at 13:06
@Steven,
cut
's equivalent on Windows is?– Pacerier
Aug 25 '15 at 13:06
Also
command | dd bs=8 count=1 2>/dev/null
. Not saying it's shorter or superior. Just another alternative.– dubiousjim
Sep 24 '15 at 3:50
Also
command | dd bs=8 count=1 2>/dev/null
. Not saying it's shorter or superior. Just another alternative.– dubiousjim
Sep 24 '15 at 3:50
@Gilles, but note that with current versions of GNU
cut
, cut -c
works like cut -b
(that is, it doesn't work properly for multi-byte characters).– Stéphane Chazelas
Aug 9 '16 at 13:49
@Gilles, but note that with current versions of GNU
cut
, cut -c
works like cut -b
(that is, it doesn't work properly for multi-byte characters).– Stéphane Chazelas
Aug 9 '16 at 13:49
add a comment |
up vote
22
down vote
These are some other ways to get only first 8 characters.
command | head -c8
command | awk 'print substr($0,1,8);exit'
command | sed 's/^(........).*/1/;q'
And if you have bash
var=$(command)
echo $var:0:8
1
I think the following sed formulation is a bit easier to read:command | sed 's/(.8).*/1/'
or if your sed supports it:command | sed -r 's/(.8).*/1/'
; Otherwise, +1
– Steven D
Oct 24 '10 at 4:48
Good stuff, but note thathead -c
counts bytes, not characters. Similarly, among the major Awk implementations, only GNU awk handles multi-byte characters correctly - FreeBSD Awk and Mawk do not.
– mklement0
Jul 5 '15 at 17:30
add a comment |
up vote
22
down vote
These are some other ways to get only first 8 characters.
command | head -c8
command | awk 'print substr($0,1,8);exit'
command | sed 's/^(........).*/1/;q'
And if you have bash
var=$(command)
echo $var:0:8
1
I think the following sed formulation is a bit easier to read:command | sed 's/(.8).*/1/'
or if your sed supports it:command | sed -r 's/(.8).*/1/'
; Otherwise, +1
– Steven D
Oct 24 '10 at 4:48
Good stuff, but note thathead -c
counts bytes, not characters. Similarly, among the major Awk implementations, only GNU awk handles multi-byte characters correctly - FreeBSD Awk and Mawk do not.
– mklement0
Jul 5 '15 at 17:30
add a comment |
up vote
22
down vote
up vote
22
down vote
These are some other ways to get only first 8 characters.
command | head -c8
command | awk 'print substr($0,1,8);exit'
command | sed 's/^(........).*/1/;q'
And if you have bash
var=$(command)
echo $var:0:8
These are some other ways to get only first 8 characters.
command | head -c8
command | awk 'print substr($0,1,8);exit'
command | sed 's/^(........).*/1/;q'
And if you have bash
var=$(command)
echo $var:0:8
answered Oct 24 '10 at 4:34
user1606
62933
62933
1
I think the following sed formulation is a bit easier to read:command | sed 's/(.8).*/1/'
or if your sed supports it:command | sed -r 's/(.8).*/1/'
; Otherwise, +1
– Steven D
Oct 24 '10 at 4:48
Good stuff, but note thathead -c
counts bytes, not characters. Similarly, among the major Awk implementations, only GNU awk handles multi-byte characters correctly - FreeBSD Awk and Mawk do not.
– mklement0
Jul 5 '15 at 17:30
add a comment |
1
I think the following sed formulation is a bit easier to read:command | sed 's/(.8).*/1/'
or if your sed supports it:command | sed -r 's/(.8).*/1/'
; Otherwise, +1
– Steven D
Oct 24 '10 at 4:48
Good stuff, but note thathead -c
counts bytes, not characters. Similarly, among the major Awk implementations, only GNU awk handles multi-byte characters correctly - FreeBSD Awk and Mawk do not.
– mklement0
Jul 5 '15 at 17:30
1
1
I think the following sed formulation is a bit easier to read:
command | sed 's/(.8).*/1/'
or if your sed supports it: command | sed -r 's/(.8).*/1/'
; Otherwise, +1– Steven D
Oct 24 '10 at 4:48
I think the following sed formulation is a bit easier to read:
command | sed 's/(.8).*/1/'
or if your sed supports it: command | sed -r 's/(.8).*/1/'
; Otherwise, +1– Steven D
Oct 24 '10 at 4:48
Good stuff, but note that
head -c
counts bytes, not characters. Similarly, among the major Awk implementations, only GNU awk handles multi-byte characters correctly - FreeBSD Awk and Mawk do not.– mklement0
Jul 5 '15 at 17:30
Good stuff, but note that
head -c
counts bytes, not characters. Similarly, among the major Awk implementations, only GNU awk handles multi-byte characters correctly - FreeBSD Awk and Mawk do not.– mklement0
Jul 5 '15 at 17:30
add a comment |
up vote
1
down vote
If you have a sufficiently advanced shell (for example, the following will work in Bash, not sure about dash), you can do:
read -n8 -d$'' -r <(command)
After executing read ... <(command)
, your characters will be in the shell variable REPLY
. Type help read
to learn about other options.
Explanation: the -n8
argument to read
says that we want up to 8 characters. The -d$''
says read until a null, rather than to a newline. This way the read will continue for 8 characters even if one of the earlier characters is a newline (but not if its a null). An alternative to -n8 -d$''
is to use -N8
, which reads for exactly 8 characters or until the stdin reaches EOF. No delimiter is honored. That probably fits your needs better, but I don't know offhand how many shells have a read that honors -N
as opposed to honoring -n
and -d
. Continuing with the explanation: -r
says ignore -escapes, so that, for example, we treat
\
as two characters, rather than as a single .
Finally, we do read ... <(command)
rather than command | read ...
because in the second form, the read is executed in a subshell which is then immediately exited, losing the information you just read.
Another option is to do all your processing inside the subshell. For example:
$ echo abcdefghijklm | read -n8 -d$'' -r; printf "REPLY=<%s>n" "$REPLY";
REPLY=<abcdefgh>
1
If you just want to output the 8 chars, and don't need to process them in the shell, then just usecut
.
– dubiousjim
Sep 8 '12 at 14:04
Good to know aboutread -n <num>
; small caveat: Bash 3.x (still current on OS) mistakenly interprets<num>
as a byte count and thus fails with multi-byte characters; this has been fixed in Bash 4.x.
– mklement0
Jul 6 '15 at 1:41
add a comment |
up vote
1
down vote
If you have a sufficiently advanced shell (for example, the following will work in Bash, not sure about dash), you can do:
read -n8 -d$'' -r <(command)
After executing read ... <(command)
, your characters will be in the shell variable REPLY
. Type help read
to learn about other options.
Explanation: the -n8
argument to read
says that we want up to 8 characters. The -d$''
says read until a null, rather than to a newline. This way the read will continue for 8 characters even if one of the earlier characters is a newline (but not if its a null). An alternative to -n8 -d$''
is to use -N8
, which reads for exactly 8 characters or until the stdin reaches EOF. No delimiter is honored. That probably fits your needs better, but I don't know offhand how many shells have a read that honors -N
as opposed to honoring -n
and -d
. Continuing with the explanation: -r
says ignore -escapes, so that, for example, we treat
\
as two characters, rather than as a single .
Finally, we do read ... <(command)
rather than command | read ...
because in the second form, the read is executed in a subshell which is then immediately exited, losing the information you just read.
Another option is to do all your processing inside the subshell. For example:
$ echo abcdefghijklm | read -n8 -d$'' -r; printf "REPLY=<%s>n" "$REPLY";
REPLY=<abcdefgh>
1
If you just want to output the 8 chars, and don't need to process them in the shell, then just usecut
.
– dubiousjim
Sep 8 '12 at 14:04
Good to know aboutread -n <num>
; small caveat: Bash 3.x (still current on OS) mistakenly interprets<num>
as a byte count and thus fails with multi-byte characters; this has been fixed in Bash 4.x.
– mklement0
Jul 6 '15 at 1:41
add a comment |
up vote
1
down vote
up vote
1
down vote
If you have a sufficiently advanced shell (for example, the following will work in Bash, not sure about dash), you can do:
read -n8 -d$'' -r <(command)
After executing read ... <(command)
, your characters will be in the shell variable REPLY
. Type help read
to learn about other options.
Explanation: the -n8
argument to read
says that we want up to 8 characters. The -d$''
says read until a null, rather than to a newline. This way the read will continue for 8 characters even if one of the earlier characters is a newline (but not if its a null). An alternative to -n8 -d$''
is to use -N8
, which reads for exactly 8 characters or until the stdin reaches EOF. No delimiter is honored. That probably fits your needs better, but I don't know offhand how many shells have a read that honors -N
as opposed to honoring -n
and -d
. Continuing with the explanation: -r
says ignore -escapes, so that, for example, we treat
\
as two characters, rather than as a single .
Finally, we do read ... <(command)
rather than command | read ...
because in the second form, the read is executed in a subshell which is then immediately exited, losing the information you just read.
Another option is to do all your processing inside the subshell. For example:
$ echo abcdefghijklm | read -n8 -d$'' -r; printf "REPLY=<%s>n" "$REPLY";
REPLY=<abcdefgh>
If you have a sufficiently advanced shell (for example, the following will work in Bash, not sure about dash), you can do:
read -n8 -d$'' -r <(command)
After executing read ... <(command)
, your characters will be in the shell variable REPLY
. Type help read
to learn about other options.
Explanation: the -n8
argument to read
says that we want up to 8 characters. The -d$''
says read until a null, rather than to a newline. This way the read will continue for 8 characters even if one of the earlier characters is a newline (but not if its a null). An alternative to -n8 -d$''
is to use -N8
, which reads for exactly 8 characters or until the stdin reaches EOF. No delimiter is honored. That probably fits your needs better, but I don't know offhand how many shells have a read that honors -N
as opposed to honoring -n
and -d
. Continuing with the explanation: -r
says ignore -escapes, so that, for example, we treat
\
as two characters, rather than as a single .
Finally, we do read ... <(command)
rather than command | read ...
because in the second form, the read is executed in a subshell which is then immediately exited, losing the information you just read.
Another option is to do all your processing inside the subshell. For example:
$ echo abcdefghijklm | read -n8 -d$'' -r; printf "REPLY=<%s>n" "$REPLY";
REPLY=<abcdefgh>
answered Sep 8 '12 at 14:02
dubiousjim
1,9581223
1,9581223
1
If you just want to output the 8 chars, and don't need to process them in the shell, then just usecut
.
– dubiousjim
Sep 8 '12 at 14:04
Good to know aboutread -n <num>
; small caveat: Bash 3.x (still current on OS) mistakenly interprets<num>
as a byte count and thus fails with multi-byte characters; this has been fixed in Bash 4.x.
– mklement0
Jul 6 '15 at 1:41
add a comment |
1
If you just want to output the 8 chars, and don't need to process them in the shell, then just usecut
.
– dubiousjim
Sep 8 '12 at 14:04
Good to know aboutread -n <num>
; small caveat: Bash 3.x (still current on OS) mistakenly interprets<num>
as a byte count and thus fails with multi-byte characters; this has been fixed in Bash 4.x.
– mklement0
Jul 6 '15 at 1:41
1
1
If you just want to output the 8 chars, and don't need to process them in the shell, then just use
cut
.– dubiousjim
Sep 8 '12 at 14:04
If you just want to output the 8 chars, and don't need to process them in the shell, then just use
cut
.– dubiousjim
Sep 8 '12 at 14:04
Good to know about
read -n <num>
; small caveat: Bash 3.x (still current on OS) mistakenly interprets <num>
as a byte count and thus fails with multi-byte characters; this has been fixed in Bash 4.x.– mklement0
Jul 6 '15 at 1:41
Good to know about
read -n <num>
; small caveat: Bash 3.x (still current on OS) mistakenly interprets <num>
as a byte count and thus fails with multi-byte characters; this has been fixed in Bash 4.x.– mklement0
Jul 6 '15 at 1:41
add a comment |
up vote
1
down vote
This is portable:
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
To build a string of variable length of characters has its own question here.
add a comment |
up vote
1
down vote
This is portable:
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
To build a string of variable length of characters has its own question here.
add a comment |
up vote
1
down vote
up vote
1
down vote
This is portable:
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
To build a string of variable length of characters has its own question here.
This is portable:
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
To build a string of variable length of characters has its own question here.
edited May 23 '17 at 12:39
Community♦
1
1
answered Aug 23 '15 at 7:12
user79743
add a comment |
add a comment |
up vote
0
down vote
I had this problem when manually generating checksum files in maven repository.
Unfortunately cut -c
always prints out a newline at the end of output.
To suppress that I use xxd
:
command | xxd -l$BYTES | xxd -r
It outputs exactly $BYTES
bytes, unless the command
's output is shorter, then exactly that output.
add a comment |
up vote
0
down vote
I had this problem when manually generating checksum files in maven repository.
Unfortunately cut -c
always prints out a newline at the end of output.
To suppress that I use xxd
:
command | xxd -l$BYTES | xxd -r
It outputs exactly $BYTES
bytes, unless the command
's output is shorter, then exactly that output.
add a comment |
up vote
0
down vote
up vote
0
down vote
I had this problem when manually generating checksum files in maven repository.
Unfortunately cut -c
always prints out a newline at the end of output.
To suppress that I use xxd
:
command | xxd -l$BYTES | xxd -r
It outputs exactly $BYTES
bytes, unless the command
's output is shorter, then exactly that output.
I had this problem when manually generating checksum files in maven repository.
Unfortunately cut -c
always prints out a newline at the end of output.
To suppress that I use xxd
:
command | xxd -l$BYTES | xxd -r
It outputs exactly $BYTES
bytes, unless the command
's output is shorter, then exactly that output.
answered Jan 5 '17 at 17:28
Krzysztof Jabłoński
1084
1084
add a comment |
add a comment |
up vote
0
down vote
Another one liner solution by using parameter expansion
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
add a comment |
up vote
0
down vote
Another one liner solution by using parameter expansion
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
add a comment |
up vote
0
down vote
up vote
0
down vote
Another one liner solution by using parameter expansion
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
Another one liner solution by using parameter expansion
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
answered yesterday
Prabhat Kumar Singh
1153
1153
add a comment |
add a comment |
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f3454%2fgrabbing-the-first-x-characters-for-a-string-from-a-pipe%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
related: stackoverflow.com/questions/1405611/…
– Ciro Santilli 新疆改造中心 六四事件 法轮功
Aug 7 at 6:43