【发布时间】:2019-08-25 22:04:57
【问题描述】:
我想在 .sh 文件中进行子字符串匹配并提取 cmds 列表并将其附加到现有文件中。
到目前为止,我使用的是perl -ne,它适用于屏幕上显示的最后匹配值
echo 'declare -a org_val=($(chkconfig --list autofs) $(grep "^PROMPT="/etc/sysconfig/init)' |
perl -pe 's|.*\$\((.*?)\)\s+|\1|g'
以下是上述命令的输出:
grep `"^PROMPT=" /etc/sysconfig/init`
我也想让它输出
chkconfig --list autofs
我所做的是使用下面的命令替换写入一个小的 .sh 并将 sed 的结果保存在数组中
#!/bin/bash
nl='\n'
declare -a array0
while IFS=$nl read -r line
do
array0+=$line
#echo $line
done < <( perl -pe 's|.*\$\((.*?)\)\s+|\1|g') < /tmp/sunny
echo "${array0[@]}"
上面的输出是
declare -a org_val=($(chkconfig --list autofs) $(grep "^PROMPT=" /etc/sysconfig/init)
/tmp/sunny的内容是
declare -a org_val=($(chkconfig --list autofs) $(grep "^PROMPT=" /etc/sysconfig/init) )
【问题讨论】: