【发布时间】:2011-09-01 22:28:36
【问题描述】:
我
上午
使用
基本
sed
表达式:-
sed -n "am/,/sed/p"
获取“am”和“sed”之间的文本 这将输出“am \n using \n basic \n sed”。 但我真正的问题是字符串是否是:-
我
上午
使用
基本
grep
表达。
我在这句话中应用了上面的sed 然后它给出了“am \n using \n basic \n grep \n expression” 它不应该给它。如何丢弃 如果没有匹配则输出?
有什么建议吗?
【问题讨论】:
-
您在编辑中如此小心添加的所有“
\n”字符是怎么回事?它们只是让您的问题难以辨认 - 但我无法完全弄清楚它们的用途,因此很难说简单地删除它们是否明智...... -
我是新手,会尽量使其符合条件。你总能说出使问题更具可读性的技巧。感谢您的建议。
-
Amitesh:成为新手很好——我们都曾经。我只是对你试图用 '
\n' 表示法实现的目标感到困惑。看起来你好像在想“如果你把这个问题作为输入,......”,但我不确定。否则,我会简单地删除所有出现的 '\n',尤其是因为该序列在sed脚本中具有我认为您不会追求的含义。 -
见Print text between delimiters on multiple lines using sed。那是处理 '(' 和 ')' 之间的文本,但它与您所追求的并没有太大区别。主要区别在于 ')' 是单个字符,因此否定字符类 '
[^)]*' 处理 '跳过无趣的东西。使用多字符分隔符并不是那么简单。 -
嘿乔纳森,我的意思是让图片更清晰,因为单词之间有换行符,它在 sed 中很重要。
标签: unix sed pattern-matching