在 Bash 中将变量行解析为文件

在 Bash 中将变量行解析为文件

假设我有一个包含任意数量的变量的文件,这些变量可以设置为数字或字符串(字符串不包含;or=或 空格)。变量用分号分隔(空格无关紧要),每行包含一组不同的变量。

A = 1; B = ball
A = 2; B = ball; C = C3

我想以这样一种方式解析该文件,使其写入一个文件,如下所示:

A=1
B=ball

和另一个文件,如下所示:

A=2
B=ball
C=C3

在 Bash 中如何实现这一点?

答案1

你可以使用 awk:

awk -F ';' '{gsub(/[[:blank:]]/,"");for(i=1;i<=NF;i++)print $i>NR}' file
  • -F ';':设置字段分隔符为分号;

  • gsub(/[[:blank:]]/,""):删除所有空白;

  • for(i=1;i<=NF;i++)print $i>NR:每一行都会关联到一个文件。第 1 行到文件 1,第 2 行到文件 2,等等。每个变量值对将打印在相应文件的一行上。

结果将是文件1并且2

$ cat 1
A=1
B=ball
$ cat 2
A=2
B=ball
C=C3

相关内容