我想grep一个SQL文件来获取以下信息,但是,我很难让它工作-我尝试了以下方法;
grep -Poe "-- Server version \K.*" _schemas.sql
SQL转储中的行为
-- MySQL dump 10.13 Distrib 5.1.55, for unknown-linux-gnu (x86_64)
--
-- Host: 10.213.118.88 Database: mysql
-- ------------------------------------------------------
-- Server version 5.1.55
格式不会改变-我只想grep服务器版本的实际数字,在本例中为5.1
sqlver=(awk '/Server version/ { split($NF,a,"."); print a[1] "." a[2] }' _schemas.sql)
if [ $sqlver -eq 5.1 ];
then
/opt/migrate/db_import.sh: line 118: [: awk: integer expression expected
3条答案
按热度按时间ijxebb2r1#
要删除最左侧的空格,请在
\K
前添加“*要在您的情况下仅保留5.1,请将
\K.*
替换为*\K.{3}
(您想要的)如果您不确定是制表符还是空格,请用途:
对应的sed版本:
qojgxg4l2#
一个
awk
创意:如果仅显示前2个以小数分隔的数字:
4sup72z83#
下面给出了该版本的前两个组件。