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

String 需要在bash中拆分特定字符数后的字符串,string,bash,variables,String,Bash,Variables,我正在编写一个bash脚本,它将执行一个命令并将值存储在一个字符串变量中,现在我需要在某些字符后拆分字符串。有办法吗?我不能使用分隔符,因为格式有点像这样 PV Name /dev/sda2 PV Size 10.39 GB 在这里,我需要获得/dev/sda2和10.39 GB(如果可能,仅10.39 GB)并将其写入一个新文件。我无法使用分隔符,因为空格首先为。。我没有做太多bash脚本。有办法做到这一点吗 echo "${var:8}" 将从字符8(从零开始)回显$var的内容

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

  PV Name /dev/sda2
  PV Size 10.39 GB
在这里,我需要获得/dev/sda2和10.39 GB(如果可能,仅10.39 GB)并将其写入一个新文件。我无法使用分隔符,因为空格首先为。。我没有做太多bash脚本。有办法做到这一点吗

echo "${var:8}"
将从字符8(从零开始)回显
$var
的内容

要从第一个空格开始删除任何内容,请执行以下操作:

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

要仅获取某些字符,请使用
cut

 $ echo '1234567' | cut -c2-5
 2345
但是,在您的情况下,
awk
看起来是更好的选择:

$ echo '  PV Size 10.39 GB' | awk '{ print $3 }'
10.39
它将文本读取为空格/制表符分隔的列,因此它应该工作得非常好

您可以使用:


我不明白你的定界符限制。
awk'{print$3}'
?如果不是,那么用
$4
代替
$3
怎么样?
$ echo "PV Name /dev/sda2" |cut -d " " -f 3
/dev/sda2