Shell 搜索符号模式
我正在尝试使用此awk脚本: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 -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,那么它应该工作正常还是不正常?这段代码不关心,它只计算括号中的值,而不管括号中的字段数量如何