需要在特定数量的字符后在bash中拆分字符串

时间:2012-05-25 15:34:36

标签: string bash variables

我正在编写一个bash脚本,它将执行一个命令并将值存储在一个字符串变量中,现在我需要在某些字符后拆分字符串。有办法吗?我不能使用分隔符,因为格式有点像这样

  PV Name /dev/sda2
  PV Size 10.39 GB

这里我需要获取/ dev / sda2和10.39 GB(如果可能,仅10.39)并将其写入新文件。我不能使用分隔符,因为空间是最初的..我没有做太多的bash脚本。有没有办法做到这一点?

3 个答案:

答案 0 :(得分:6)

echo "${var:8}"

将从字符8(从零开始)回显$var的内容。

从第一个空格开始剥离任何东西:

data=${var:8}
echo "${data%% *}"

答案 1 :(得分:3)

要仅获取特定字符,请使用cut

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

但是,在您的情况下,awk似乎是更好的选择:

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

它将文本读取为空格/制表符分隔列,因此它应该可以正常工作

答案 2 :(得分:2)

您可以使用cut

$ echo "PV Name /dev/sda2" |cut -d " " -f 3
/dev/sda2