8

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

  PV Name /dev/sda2
  PV Size 10.39 GB

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

4

3 回答 3

7
echo "${var:8}"

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

剥离从第一个空格开始的任何内容:

data=${var:8}
echo "${data%% *}"
于 2012-05-25T15:38:19.097 回答
7

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

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

但是,在您的情况下awk看起来更好的选择:

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

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

于 2012-05-25T15:40:27.523 回答
2

你可以使用cut

$ echo "PV Name /dev/sda2" |cut -d " " -f 3
/dev/sda2
于 2012-05-25T15:42:49.270 回答