- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我无法从区域文件中准确地搜索出我想要的 10 位数字。
示例区域文件是:
> cat /var/named/test.com.db
; cPanel first:11.11.0-BETA_16994 (update_time):1468656855 Cpanel::ZoneFile::VERSION:1.3 hostname:server.test.com latest:11.56.0.13
; Zone file for test.com
$TTL 14400
test.com. 86400 IN SOA ns1.test.com. cpanel.test.com. (
2016071602 ;Serial Number
14400 ;refresh
7200 ;retry
2419200 ;expire
43200 )
; test.com. 86400 IN SOA ns1.test.com. serveralerts.test.com. ( ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
; 2015061700 ;Serial Number ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
; 86400 ;refresh ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
; 7200 ;retry ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
; 3600000 ;expire ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
; 86400 ;minimum ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
; ) ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
test.com. 86400 IN NS ns1.test.com.
test.com. 86400 IN NS ns2.test.com.
; test.com. 86400 IN NS ns1.test.com. ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
; test.com. 86400 IN NS ns2.test.com. ; Previous value removed by cPanel restore auto-merge on 20160510102706 GMT
test.com. 14400 IN A 192.168.1.100
localhost 14400 IN A 127.0.0.1
test.com. 14400 IN MX 0 test.com.
mail 14400 IN CNAME test.com.
www 14400 IN CNAME test.com.
ftp 14400 IN CNAME test.com.
webdisk 14400 IN A 192.168.1.100
cpcalendars 14400 IN A 192.168.1.100
test.com. IN TXT "v=spf1 +a +mx +ip4:192.168.1.100 ~all"
我只想在 grep 输出中看到区域文件中的当前序列号 2016071602。
为此我尝试了命令:
grep -o '2016[0-9]\{6\}' /var/named/test.com.db
但它会输出所有这些垃圾。我的意思是长度超过 10 的偶数
我得到的结果是:
> grep -o '2016[0-9]\{6\}' /var/named/test.com.db
2016071602
2016051010
2016051010
2016051010
2016051010
2016051010
2016051010
2016051010
2016051010
2016051010
你能帮我正确地过滤掉这个吗?。一旦我能够更正这个问题,我将很乐意继续在服务器上进行质量区域更新。
最佳答案
问题是 2016[0-9]\{6\}
匹配以 2016
开头的任意十位数字.它对这些数字之前或之后的内容没有限制。
尝试:
$ grep -Eo '2016[0-9]{6}[^0-9]' test.com.db
2016071602
或者,更好的是,如果你的 grep 支持 -P
,就像在 Linux 系统上一样:
$ grep -Po '2016[0-9]{6}(?=[^0-9])' test.com.db
2016071602
在这里,(?=[^0-9])
是前瞻性的:它要求数字后面有一个非数字,但它不包含在匹配中。
或者,获取“序列号”后面的数字:
$ grep -Po '2016[0-9]{6}(?=.*Serial Number)' test.com.db
2016071602
这就要求十位数字后面的字符必须是非数字。 ( [^0-9]
匹配任何非数字,因为 ^
是它后面的否定。)
为确保这适用于 unicode 字体,您可能需要替换 [0-9]
及其 unicode 安全替代方案:[[:digit:]]
:
$ grep -Po '2016[[:digit:]]{6}(?=[^[:digit:]])' test.com.db
2016071602
关于linux - 无法从文件中仅 grep 10 位数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38681975/
我有一个文件 test.log。非常大的日志文件。它有不同级别的日志记录。例如,trace , debug , info , warning和 error . 显然trace级别消息只是高速发送垃圾邮
我正在经历一些事情,发现了我无法理解的事情, grep -v grep 这意味着什么?我知道 -v 开关将选择所有不匹配的行。但为什么是第二个grep? 这是完整的命令: ps -ef | grep
我使用 egrep 输出一些带有平台名称的行: XXX | egrep "i686-nptl-linux-gnu$|i686-w64-mingw32$|x86_64-unknown-linux-gnu
grep退出状态部分报告中的手册: EXIT STATUS The exit status is 0 if selected lines are found, and 1 if not
我试图返回多个字符串的第一次出现,即,我想从以下文本中选择第一次出现 1259、3009 和 1589 的行。 ADWN 1259 11:00 B23 ADWN 3009
我猜它不是 Perl 兼容的正则表达式,因为有一种特殊的 grep具体来说就是 PCRE。什么是grep最相似? grep有什么特别的怪癖吗?我需要知道什么? (我习惯了 Perl 和 PHP 中的
有没有办法让 grep 从与搜索表达式匹配的文件中输出“单词”? 如果我想在多个文件中查找“th”的所有实例,我可以这样做: grep "th" * 但是输出会是这样的(粗体是我写的); some-t
我有许多(近 100 个)大 csv 文件,第一列中有 sellID。我知道某些 sellID 在 2 个或更多文件中重复 2 次或多次。是否可以使用 grep 找到所有重复的 sellID(创建映射
我有一个文件中的文件列表。该列表很大,并且文件名是非标准的:这意味着有些文件包含空格、非 ASCII 字符、引号、单引号... 因此,将庞大的文件列表作为参数传递给 grep 并不是一种选择: 因为我
我想在 shell 脚本中使用 grep 和两个变量 var = match cat list.txt | while read word_from_list; do grep "$word_
我有一个大文件,其中每一行都包含一个子字符串,例如 ABC123。如果我执行 grep ABC file.txt 或 grep ABC1 file.txt 我按预期返回这些行,但如果我执行 grep
当我执行以下 grep 时,我得到的结果我无法向自己解释: host:/usr/local/tomcat > grep '-XX:PermSize=256m' * RELEASE-NOTES:
这个问题在这里已经有了答案: grep recursively for a specific file type on Linux (5 个回答) 关闭4年前。 要在子目录中查找所有带有 .out 扩
有什么方法可以让我在搜索某些东西时使用 grep 忽略某些文件,相当于 svnignore 或 gitignore 的东西?我通常在搜索源代码时使用类似的东西。 grep -r something *
有没有办法让 grep 从匹配搜索表达式的文件中输出“单词”? 如果我想在多个文件中找到“th”的所有实例,我可以这样做: grep "th" * 但是输出会是这样的(粗体是我的); some-tex
我是 awk/sed 的完全菜鸟,所以如果我在这里遗漏了一些明显的东西,请原谅我。 基本上我正在尝试做一个嵌套的 grep,即类似于: grep $value `exim -Mvh $(`exim -
我正在尝试编写下载 node.js source 的脚本和 corresponding SHASUMS256.txt ,校验和,grep OK,不返回任何结果,使用 grep 的 -q 标志成功退出代
在 grep "str"* 这是否意味着 grep 执行 grep 的所有内容? 那么 grep -r "str". 的结果比前一个多 最佳答案 当您运行 grep str * 时,shell 将扩展
我正在尝试 grep 文件以查找匹配项的确切出现,但我也得到了更长的虚假匹配项: grep CAT1717O99 myfile.txt -F -w 输出: CAT1717O99 CAT1717O99
我有一个文件,其中包含我希望通过未指定分析运行的标识符(每行一个)。如果一切运行正常,分析将输出具有相同标识符的另一个列表(不一定按相同顺序)。 然而,事实证明,对某些输入标识符没有进行分析,并且这些
我是一名优秀的程序员,十分优秀!