bash - 在 bash 中分割导出格式

标签 bash

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

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/

相关文章:

linux - Bash:覆盖生成文件中的路径

macos - 外壳错误 "-bash: bad substitution: no closing ` )'"

bash - 删除冗余数据

bash - 是否有用于延迟缓冲区的 shell 命令?

linux - 更改 bash IO 缓冲区设置

bash - 如何从脚本设置 bash 环境变量?

bash - Unix 管道 - echo 和 cat

windows - 我如何将文件目录(路径)作为参数传递?

java - 在 Ubuntu WSL 中运行 bash 脚本时出现不一致的 S3 参数验证错误

bash - Kubernetes cloudsql 中使用特殊字符转义密码的问题