如何使用Bash提取文件中的所有变量名?
Bash提取文件中的变量名方法
下面提供两种简单的命令行方法,可从目标文件中提取所有${变量名}格式的变量名,并输出为空格分隔的形式:
方法一:使用grep命令
假设目标文件名为test.txt,执行以下命令:
grep -oP '\$\{\K[a-zA-Z0-9_]+' test.txt | tr '\n' ' '
-o:仅输出匹配到的内容片段-P:启用Perl兼容正则表达式\$\{\K:匹配${后忽略这部分内容,只保留后续的变量名[a-zA-Z0-9_]+:匹配符合Bash变量命名规则的字符(字母、数字、下划线)tr '\n' ' ':将每行的匹配结果转换为空格分隔的形式
方法二:使用sed命令
同样以test.txt为例,执行命令:
sed -E 's/.*\$\{([a-zA-Z0-9_]+)\}.*/\1 /g' test.txt | xargs
-E:使用扩展正则表达式简化语法s/.*\$\{([a-zA-Z0-9_]+)\}.*/\1 /g:全局匹配所有${变量名}结构,提取其中的变量名并添加空格xargs:自动整理输出,去除多余空格
执行上述任意命令后,对于内容为text${v1}text${v2}etc的文件,都会输出:v1 v2
内容的提问来源于stack exchange,提问作者ogbofjnr
相关产品推荐
相关产品推荐

