给定具有以下语法的文件:
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/