给定具有以下语法的文件:

export 'my_var1=value1' 'my_var2=value2' 'my_var3=value3'
export 'my_var3=value3' 'my_var4=value4'

有没有什么方法可以把它拆分成bash来获取变量名?
my_var1
my_var2
my_var3

我想先是按线分割,然后是按空间分割。但是“值”可以包含空格。我想关键在引文里。
谢谢。

最佳答案

Awk对此很有效,而且相当容易阅读。

awk -F "export '|' '|'$" '{for(i=1;i<NF;i++){if(split($i,arr,"=")==2)print arr[1]}}' file

说明:
-F "export '|' '|'$"-三种模式(export '' ''$)中的任何一种都用于分隔每一行。
if(split($i,arr,"=")==2)print arr[1]-对于每个令牌,用=分隔,如果有两个令牌,则打印第一个令牌。
编辑:正如注释中指出的,需要将“=分隔符和句柄设置为当值可以有两个以上的标记时:
awk -F "export '|' '|'$" '{for(i=1;i<NF;i++){if(split($i,arr,"\x27=")!=0)print arr[1]}}' file

关于bash - 在bash中分割导出格式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55125833/

10-13 07:27