假设我有一个包含任意数量的变量的文件,这些变量可以设置为数字或字符串(字符串不包含;
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