小编use*_*603的帖子

使用sed/regex在同一行上提取多个匹配项

我试图遍历文件中的每一行,找到并提取以开头${和结尾的字母}.所以作为我期待的最终输出SOLDIRTEMP(来自inputfile.sh).

我尝试使用以下脚本,但它似乎匹配并仅提取模式的第二次出现TEMP.我也尝试g在最后添加,但它没有帮助.有人可以告诉我如何在同一行上匹配和提取两个/多个事件?

inputfile.sh:

.  
.  
SOLPORT=\`grep -A 4 '\[LocalDB\]' \${SOLDIR}/solidhac.ini | grep \${TEMP} | awk '{print $2}'\`  
.  
.  
Run Code Online (Sandbox Code Playgroud)

script.sh:

infile='inputfile.sh'  
while read line ; do    
  echo $line | sed 's%.*${\([^}]*\)}.*%\1%g'  
done < "$infile"  
Run Code Online (Sandbox Code Playgroud)

regex sed

12
推荐指数
1
解决办法
5838
查看次数

使用bash/sed搜索和替换文件中的变量

我正在尝试编写一个bash脚本(script.sh)来搜索和替换in​​put.sh文件中的一些变量.但是我只需要修改variable_list文件中存在的变量,并保留其他变量.

variable_list

${user}  
${dbname}
Run Code Online (Sandbox Code Playgroud)

input.sh

username=${user}  
password=${password}  
dbname=${dbname}
Run Code Online (Sandbox Code Playgroud)

预期的输出文件

username=oracle  
password=${password} > This line won't be changed as this variable(${password}) is not in variable_list file
dbname=oracle
Run Code Online (Sandbox Code Playgroud)

以下是我尝试使用的脚本,但我无法找到正确的sed表达式

script.sh

export user=oracle  
export password=oracle123  
export dbname=oracle

variable='variable_list'  
while read line ;  
do  
 if [[ -n $line ]]     
 then  
  sed -i 's/$line/$line/g' input.sh > output.sh  
 fi  
done < "$variable"    
Run Code Online (Sandbox Code Playgroud)

bash sed

5
推荐指数
1
解决办法
2万
查看次数

标签 统计

sed ×2

bash ×1

regex ×1