从下面的数据摘录中,我试图只查看粗体的项目,有办法做到这一点吗?文件的特定部分很重要,这就是为什么“into. db. values”很重要-还假设我不知道这些项目的实际值
grep "INTO .db. VALUES" ./anikokiss_mysql4.sql
插入db
值(“本地主机”、“博客”、“yscr_bbYcqN”、"Y"、“Y”、"Y“、" Y”、"N"、"N"、"N“、" N”),(“本地主机”、“博客1”、“yscr_bbS4kf”、“是”、“是”、“是”、“是”、"否"、"否“、"否”、"否“),(“本地主机”、“博客”、“yscr_bbhrSZ”、"Y"、"Y“、" Y”、"Y“、" N "、" N "、" N”、"N“),(“本地主机”、“博客”、“yscr_bbBl 0 C”、“Y "、" Y”、"Y“、" Y”、"N"、"N"、"N“)、(”本地主机“、”博客“、”yscr_bbrsKX“、”Y"、"Y“、" Y”、"Y“、”N“、" N "、" N”、"N“);
结果
cut -d',' -f2 <(awk '/.*INTO .?db.? VALUES.*/,/.*;/{if (NR > 2) nr[NR]}; NR in nr' ./anikokiss_mysql4.sql)
是
'blog'
因此,它似乎只选取第一批命令分隔值,而忽略后面的值
与grep命令类似
grep "INTO .db. VALUES" ./anikokiss_mysql4.sql | cut -d "'" -f4
我们得到了结果
blog
当我更新数据库名称时
find . -name '*.sql' -exec sed -i "s/\\(CREATE DATABASE [^\`]*\`\\)/\\1${cpuser}_/" {} +
电流输出
[root@uk01 public_html]# grep -Pzo '(?s)INTO .?db.? VALUES[^(]\K[^;]*' aniko.sql | grep -Pao '\(([^,]*,){2}\K[^,]*' | sed -e 's/^/test_/'
test_'yscr_bbYcqN'
test_'yscr_bbS4kf'
test_'yscr_bbhrSZ'
test_'yscr_bbBl0C'
test_'yscr_bbrsKX'
1条答案
按热度按时间sauutmhj1#
这里使用
grep
来实现您想要的:首先,我使用
grep
获取INTO db VALUES
之后的所有内容,然后将其输出传递给grep
的另一个示例,该示例在第一个,
之后将其截断。要更改要获取的列,只需重复上一个grep
{N}
中的look behind:会得到第四列,