开发者

Nth word in a string variable

开发者 https://www.devze.com 2023-01-03 08:10 出处:网络
In Bash, I want to get the Nth word of a string hold by a variable. For instance: STRING=\"one two three four\"

In Bash, I want to get the Nth word of a string hold by a variable.

For instance:

STRING="one two three four"
N=3

Result开发者_Python百科:

"three"

What Bash command/script could do this?


echo $STRING | cut -d " " -f $N


An alternative

N=3
STRING="one two three four"

arr=($STRING)
echo ${arr[N-1]}


Using awk

echo $STRING | awk -v N=$N '{print $N}'

Test

% N=3
% STRING="one two three four"
% echo $STRING | awk -v N=$N '{print $N}'
three


A file containing some statements:

cat test.txt

Result:

This is the 1st Statement
This is the 2nd Statement
This is the 3rd Statement
This is the 4th Statement
This is the 5th Statement

So, to print the 4th word of this statement type:

awk '{print $4}' test.txt

Output:

1st
2nd
3rd
4th
5th


No expensive forks, no pipes, no bashisms:

$ set -- $STRING
$ eval echo \${$N}
three

Or, if you want to avoid eval,

$ set -- $STRING
$ shift $((N-1))
$ echo $1
three

But beware of globbing (use set -f to turn off filename globbing).


STRING=(one two three four)
echo "${STRING[n]}"
0

精彩评论

暂无评论...
验证码 换一张
取 消