加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何在触发“未终止替代模式”错误的bash脚本中重新组织sed正则

发布时间:2020-12-15 21:18:00 所属栏目:安全 来源:网络整理
导读:以下命令在bash中抛出未终止的替换模式错误: eval $(echo "sed '" "s,@("{a..u}{a..z}"),nn1,;" "'") 但不适合所有人. Linux显然运行良好. Mac抛出未终止的替代模式错误. 我怎样才能重组以使这项工作成功? 这是整个bash命令(目标是将当前的MySQL设置
以下命令在bash中抛出未终止的替换模式错误:

eval $(echo "sed '" "s,@("{a..u}{a..z}"),nn1,;" "'")

但不适合所有人. Linux显然运行良好. Mac抛出未终止的替代模式错误.

我怎样才能重组以使这项工作成功?

这是整个bash命令(目标是将当前的MySQL设置干净地输出到my.cnf):

{
  # Print version,user,host and time
  echo -e "# MYSQL VARIABLES {{{1n##n# MYSQL `
      mysql -V | sed 's,^.*(V.*),for.*,1,'
      ` - By: `logname`@`hostname -f` on `date +%c`n##"
  for l in {a..z}; do
      # Get mysql global variables starting with $l
      echo '#'; mysql -NBe "SHOW GLOBAL VARIABLES LIKE '${l}%'" |
      # Transorm it
      sed 's,t,^=,' |
      column -ts^ |
      tr "n" '@' |
      eval $(echo "sed '" "s,;" "'") |
      eval $(echo "sed '" "s,@(innodb_"{a..z}{a..z}"),;" "'") |
      tr '@' "n" |
      sed 's,^,#,g'
  done
  echo -e "#n##n# MYSQL VARIABLES }}}1";
} | tee ~/mysql-variables.log

解决方法

OS X中的默认sed是sed的BSD版本.刚测过:

>以上在OS X的默认sed中失败,
>并使用GNU版本(gsed – 从macports安装).

因此,可能BSD版本不处理这样的长替换命令序列.

您可以尝试使用下一个:

eval $(echo "perl -ple '" "s,@("{a..u}{a..z}"),;" "'")

也许我不明白你的目标,但更简单的是什么是错的?

sed 's/@([a-u][a-z])/nn1/' #or
sed 's/@("[a-u][a-z]")/nn1/'

编辑

我再次专注于第一个代码行,而不是整个解决方案.因此创建了一个bash / perl版本,在OS X上没有问题(使用默认的OS X工具).

下一个代码

MYSQLCMD=/usr/local/mysql-5.6.16-osx10.7-x86_64/bin/mysql   #your path to mysql command

printf "# MYSQL VARIABLES {{{1n##n# MYSQL %s " "$($MYSQLCMD -V | sed 's/.*(Ver .*),.*/1/')"
printf " - By: %s@%s on %sn" $(logname) $(hostname -f) "$(date +%c)"

perl -e "$s=qx($MYSQLCMD -NBe 'SHOW GLOBAL VARIABLES');" 
     -e 'for("aa".."uz"){$s=~s/^($_)/#n$1/m;$s=~s/^(innodb_$_)/#n$1/m};' 
     -e '$s=~s/(.*)t(.*)/sprintf "# %-55s= %s",$1,$2/gem;print $s'

printf "#n##n# MYSQL VARIABLES }}}1n";

大致与原始代码完全相同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读