- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我完全迷失在 shell 编程中,主要是因为我使用的每个站点都提供不同的工具来进行模式匹配。所以我的问题是使用什么工具在管道流中进行简单的模式匹配。
上下文:我有named.conf 文件,我需要一个简单文件中的所有区域名称以供进一步处理。所以我做 ~$ cat named.local | grep zone 并在这里完全迷路。我的输出是 'zone "domain.tld"{' 形式的大约一百个换行符,我需要双引号中的文本。
感谢您展示一种方法来做到这一点。
J
1 Câu trả lời
我想你要找的是 sed
... 这是一个 S 流 biên tập itor 可以让您逐行进行替换。
正如你所解释的,命令`cat named.local | grep zone' 给你一个类似这样的输出:
zone "domain1.tld" {
zone "domain2.tld" {
zone "domain3.tld" {
zone "domain4.tld" {
"domain1.tld"
"domain2.tld"
"domain3.tld"
"domain4.tld"
/.o.e/
将匹配任何带有第二个字母的单词的行是小写
ôi
,第四个是
và
.这将匹配包含“
zone
”、“
tone
”或“
I am tone-deaf.
”等单词的字符串
.
(点)字符表示“任何字母”。还有一些其他特殊字符,例如
*
这意味着“重复前一个字符 0 次或更多次”。因此,像
a*
这样的正则表达式将匹配“
Một
”、“
aaaaaaa
”或空字符串:“”
/".*"/
sed
,您还需要了解另一件事(根据评论,您已经这样做了!) - 它允许回溯。一旦你告诉它如何识别一个词,你就可以让它使用这个词作为替换的一部分。例如,假设您想翻转此列表:
Billy "The Kid" Smith
Jimmy "The Fish" Stuart
Chuck "The Man" Norris
The Kid
The Fish
The Man
/".*"/
.
/"(.*)"/
s/"(.*)"/_/
,这会给我们留下:
Billy _ Smith
Jimmy _ Stuart
Chuck _ Norris
\1
来记忆括号内的内容。 .所以如果我们现在这样做:
s/"(.*)"/\1/
Chúng ta sẽ nhận được:
Billy The Kid Smith
Jimmy The Fish Stuart
Chuck The Man Norris
\1
内容的一部分。 !
^
(意思是“行首”)和
$
(这意味着“行尾”。)
s/^.*"(.*)".*$/\1/
, chúng ta sẽ nhận được:
The Kid
The Fish
The Man
s/^.*"(.*)".*$/\1/
从左到右:
s/
- 开始 替代正则表达式 ^
- 寻找行的开头。从那里开始。 .*
- 继续阅读每个字符,直到... "
- ... 直到出现双引号。 (
- 开始一组一个我们可能想在回溯时记忆的字符。 .*
- 继续阅读每个字符,直到... )
- (嘘!关闭群!)"
- ... 直到出现双引号。 .*
- 继续阅读每个字符,直到... $
- 行的尽头! /
- 使用此后的内容替换您匹配的内容 \1
- 粘贴第一组的内容(括号中的内容)匹配。 /
- 正则表达式结束 s/^.*"(.*)".*$/"\1"/
,所以我们会得到:
"The Kid"
"The Fish"
"The Man"
sed
使用用引号内的内容替换该行:
sed -e "s/^.*\"\(.*\)\".*$/\"\1\"/"
cat named.local | grep zone | sed -e "s/^.*\"\(.*\)\".*$/\"\1\"/"
关于regex - 匹配引号中的文本(新手),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792474/
我正在尝试编写一个函数,该函数接受输入字符串、正则表达式(由 std.regex.regex 从原始字符串生成)和错误消息字符串,并尝试匹配来自使用正则表达式输入字符串,如果没有匹配则显示错误消息。到
-edit- 注意 ?末.{2,}? 我发现你可以写 .{2,}? 是不是和下面一模一样? .{2} 最佳答案 号{2,}表示两次或更多次同时 {2}意思是正好两次。量词默认是贪婪的,所以给定字符串
我有以下文字: This is a test ::a. MODE 3 within 7 hours, ::b. MODE 4 within 13 hours, and ::c. MODE 5 with
我用 Regex.fromLiteral(".*") 创建了一个非常简单的匹配所有正则表达式. 根据documentation :“返回指定文字字符串的文字正则表达式。” 但是我真的不明白“对于指定的
Hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy câu hỏi này có thể được cải thiện và có thể mở lại, hãy truy cập
该Web项目将静态内容放入一些/content/img文件夹中。 网址规则是:/img/{some md5} 但在文件夹中的位置:/content/img/{前两位数字}/ 例子 url:
我有以下数据: SOMEDATA .test 01/45/12 2.50 THIS IS DATA 我想从中提取数字 2.50。我已设法使用以下 RegEx 做到这一点: (?<=\d{2}\/\d{
我需要证明或反驳下面的正则表达式 (RS + R )* R = R (SR + R)* // or, for programmers: /(RS|R)*R/ == /R(SR|R)*/ 我有一种强烈的
对于具有自由文本的字符串: "The shares of the stock at the XKI Market fell by €89.99 today, which saw a drop of a
例如,我有 RegEx DSX-?2 的 var 我需要将此变量添加到 RegEx 并获取此 .match(/DSX-?2/gi) 最佳答案 您可以创建一个 RegExp对象使用 new RegExp
我无法区分大小写的搜索无法在SQLITE中用于REGEX。支持语法吗? SELECT * FROM table WHERE name REGEXP 'smith[s]*\i' 我希望得到以下答案(假设
Visual Studio / XPath / RegEx: 给定表达式: (?(Car|Car Blue)) +(?.+) +---> +(?.+) 给定搜索字符串: Car Blue Flying
我有一个看起来像这样的正则表达式 /^(?:\w+\s)*(\w+)$*/ 什么是?: ? 最佳答案 它表示子模式是非捕获子模式。这意味着在 (?:\w+\s) 中匹配的任何内容,即使它被 () 括起
Hiện tại, câu hỏi này không phù hợp với định dạng Hỏi & Đáp của chúng tôi. Chúng tôi mong đợi câu trả lời được hỗ trợ bằng sự kiện, trích dẫn hoặc chuyên môn, nhưng câu hỏi này có thể gây ra tranh luận, tranh cãi, thăm dò ý kiến hoặc thảo luận mở rộng. Nếu bạn cảm thấy câu hỏi này có thể được cải thiện và có thể mở lại, hãy truy cập
我在 Excel 工作表(也以 csv 格式)中获得了姓名列表,并根据姓名来源进行了分组。 这就是我创建的组的样子。 现在我想添加一个新列,名称后面包含组名称。 这就是我想要获得的。 我如何得到这个?
我试图将一个字符串拆分为一个字符串列表,单词是分开的,但是周围的字符,例如.. "?()“”!"也分开。 要分隔的字符串是"testing “testing” “one two three” (hi
我有一个来自视频转换文件的完整日志,它看起来像这样: -------------------------------------------------------------------------
在定界符为“-”的模式 X-Y-Z 中,我想检查 Y 是否具有大小 8 而没有重复。 Y 可以是像 Y = (A-B-C) 这样的子集,但如果没有,则 Y 的值为 1 1 - num-12345678
Java确实有这个功能,谢谢你的回答,对我来说失去对API的关注太可惜了... 例如: String strOriginal = "A:B&C@D"; 我认为java中应该有一个非常好的方法来改变它,
我只需要接受符合这些规则的输入... 0.25-24 0.25 的增量(.00、.25、.50、.75) 第一个数字不是必须的。 希望尾随零是可选的。 一些有效条目的示例: 0.25 .50 .5 1
Tôi là một lập trình viên xuất sắc, rất giỏi!