Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Need to split a string in bash after certain number of characters

I am writing a bash script that will execute a command and store the value in a string variable, now I need to split the string after certain characters. Is there a way? I cannot use delimiters coz the format is kinda like this

  PV Name /dev/sda2
  PV Size 10.39 GB

Here I need to get the /dev/sda2 and 10.39 GB(if possible, just 10.39 alone) and write it in a new file. I cannot use delimiter because the space is at first.. I have not done much bash scripting. Is there a way to do this?

like image 573
howtechstuffworks Avatar asked May 25 '12 15:05

howtechstuffworks


3 Answers

echo "${var:8}"

will echo the contents of $var starting at the character 8 (zero-based).

To strip off anything starting at the first space:

data=${var:8}
echo "${data%% *}"
like image 57
Dennis Williamson Avatar answered Nov 07 '22 18:11

Dennis Williamson


To get only certain characters, use cut:

 $ echo '1234567' | cut -c2-5
 2345

However, in your case awk looks like better option:

$ echo '  PV Size 10.39 GB' | awk '{ print $3 }'
10.39

It reads text as space/tab separated columns, so it should work perfectly fine

like image 8
aland Avatar answered Nov 07 '22 16:11

aland


You could use cut:

$ echo "PV Name /dev/sda2" |cut -d " " -f 3
/dev/sda2
like image 2
Facundo Casco Avatar answered Nov 07 '22 17:11

Facundo Casco