Shell 搜索符号模式

Shell 搜索符号模式,shell,awk,Shell,Awk,我正在尝试使用此awk脚本: awk -v count=0 '/`),`/ { count++ } END { print count }' sample.sql 但我得到了以下错误: ERROR: awk: line 1: runaway regular expression /\),/ {.. 为什么我会出现这个错误,我能做些什么来修复它 目标是使用反勾号和右括号计算行数,如: INSERT INTO test (`id`, `Address`) VALUES (1,'Delhi'),(

我正在尝试使用此awk脚本:

awk -v count=0 '/`),`/ { count++ } END { print count }' sample.sql
但我得到了以下错误:

ERROR:
awk: line 1: runaway regular expression /\),/ {..
为什么我会出现这个错误,我能做些什么来修复它

目标是使用反勾号和右括号计算行数,如:

INSERT INTO test (`id`, `Address`) VALUES (1,'Delhi'),(2,'Mumbai')
Thanx@Tensibai。我刚刚将添加到,。以及它的作品。我的.sql 包含插入到
test
id
nm
)值中 (1,“德里”),(2,“孟买”),(3,“钦奈”)。。。;所以,我确实在寻找, 起始计数=1。有人知道哪里会更好吗 做计数


请您更清楚地了解您试图实现的目标,据我所知,您正在尝试获取sample.sql文件中的行数,您也可以使用

awk -v count=0 '{ gsub("[^)]", ""); count++} END{print count}' sample.sql

awk
在第一次使用时使用
0
初始化整数。如果要计算包含
的文件中的行数,只需使用以下命令:

awk '/\)/{c++} END {print c}' input

如果我正确理解了您试图实现的目标(计算包含
的行),
),则应执行以下操作:

awk '/\(`.*`\)`/ { count++ } END { print count }' sample.sql
无需初始化变量,匹配包含

(` any text here `)
并在末尾增加要打印的计数器


我对最初的问题有点怀疑,这里是如何计算每行中的值的数量:

awk '/\(.*\),/ { n=split($0,a,"\),"); print n; ncount += n; count++;} END { print "Lines matched:",count,"total values:",ncount }'
这里,对于具有多个值的每一行(匹配
(内部文本),
)拆分为
),
,并将值的数量放入变量
n
,然后打印
n
,求和值的数量并增加匹配的行数

最后打印匹配的行和找到的总值

警告这不计算只给出一个值的行。(无
在最后一个之后)


要避免上述警告并仅关注
插入
语句,请执行以下操作:

 awk '/INSERT.*\(.*\),*/ { n=split($0,a,"\)(,|\n)"); print n; count++;} END { print count }' /srv/db-backup-20-10-2014.sql

添加INSERT作为起始词,并在拆分中添加一个选项,以在结束括号中拆分,后跟逗号或换行符。

什么版本
awk--version
?另外,我猜这是在一个管道,你有更多的单引号挂在周围?当我搜索任何单词,如插入,然后它运行,并给我输出。但是,当我搜索时,它会给我一个错误,这些背景应该在那里吗<代码>'/`),`/为什么在正则表达式中使用反勾号?
在正则表达式中有一个含义,它应该被转义:
'/\),/{count++}
应该do@Tensibai很公平,我只是为了公平才试着装傻!我问过OP他们使用的是什么版本,但他们没有回答。OP在评论中说,目标是计算包含
的行数,但是.sql文件包含。一些类似于……插入
测试
id
地址
)值(1,'drigh'),(2,'Mumbai')。。。。;所以我想计算行数,这意味着有多少个值(1,'Delhi')->1,然后(2,'Mumbai')->是2..像Wise一样,我想用
)计算行数,
on.count the'),'这在整个文件中。Thanx我正在寻找它。它的工作很有魅力。谢谢。@Pranay我也发现了一个缺点,这也算上了
主键(列),
列,你想只算
INSERT
语句吗?是的,在我的.sql文件中只算INSERT语句现在在words我的.sql文件中包含。。在
test
id
nm
)值(1,'drish'),。。。但是,如果将来它包含的内容超过了本文中的列s,那么它应该工作正常还是不正常?这段代码不关心,它只计算括号中的值,而不管括号中的字段数量如何