给定一个具有以下语法的文件:
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 '
、' '
、'$
)用于分隔每行。
if(split($i,arr,"=")==2)print arr[1]
- 对于每个标记,用 =
分隔(如果存在)是两个标记,然后打印第一个。
编辑:正如评论中所指出的,当值可以有超过 2 个标记时,需要使用 '= 分隔符和处理:
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/