“ s =。* / ==”在sed中做什么?

阿列克谢·马蒂安诺夫(Alexei Martianov)

sed 's=.*/=='在sh脚本的上下文中看到了,我很困惑。我不能在sed手动或网络搜索(对于找到sed s=如何)s时,不s///除了s我在这里只看到一个潜在的命令=(打印当前输入行号)外,在这种情况下,其余的工作...

在shell中运行命令会产生与输入相同的输出,例如echo 'jkfdsa=335r34',但是echo 'jkfdsa=335r34' | sed 's/=.*/==/'会按照手册进行替换。还稍微修改了命令,例如echo 'jkfdsa=3' | sed 's798=.*/==/'
sed: -e expression #1, char 11: unterminated 's' command,所以原始的应该有一些正确的含义。它是什么?

库萨兰达

=是替代分隔符。使用这些是因为该模式包含一个/(这是更常用的定界符)。几乎任何字符都可以用作替代定界符,因此s@.*/@@s_.*/__将具有相同含义。使用普通定界符,该sed表达式可能被编写为

s/.*\///

/表达式要匹配的文字需要在此处转义),或者可能更具可读性,

s/.*[/]//

[...]字符类中的大多数字符都是文字1

sed表达式的作用是替换所有不匹配.*/的内容。这将具有删除/行中最后一个字符(包括该字符)之前的所有内容的作用由于贪婪地匹配任何字符的任何序列,因此它将删除最后一个 /(而不是第一个).*

例子:

$ echo 'a/b/c' | sed 's/.*[/]//'
c

unterminated 's' command测试时遇到错误

s798=.*/==/

是由于7用作s命令的分隔符表达方式

s7.*/77

本来可以的。


1 ...除了具有内特殊含义的字符[...]本身^(在开始时)和-(当未第一,第二后^,或最后一个)。内的字符[]也需要特殊处理[...],但这超出了此问题的范围。


如果使用此命令在某个字符串或shell变量中的路径末尾获取文件名,则该basename实用程序可能会做得更好(如果路径以斜杠结尾也可以做正确的事情):

$ basename a/b/c
c
$ basename a/b/c/
c

同样,${variable##*/}假设变量不包含换行符,则标准Shell参数替换的效果等同于$variable通过sed命令替换将上述值传递给上述表达式,但速度要快许多倍。

变量替换和basename实用程序还可以正确处理包含换行符的路径名,sed而不会这样做(因为它逐行处理其输入)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

“ sed s _。* / _”在做什么?

来自分类Dev

<s:iterator>中的“状态”是做什么的?

来自分类Dev

这段代码中的“ s”是做什么的?

来自分类Dev

::在sed脚本中做什么

来自分类Dev

:$ s是做什么的?

来自分类Dev

此Makefile的“ sed -i's,-m64,,g'”是做什么的?

来自分类Dev

这个命令是做什么的?ls / usr / bin | grep“ man” | sed“ s / man / ### /”?

来自分类Dev

bash -s是做什么的?

来自分类Dev

bash -s是做什么的?

来自分类Dev

sed中的“ D”命令做什么?

来自分类Dev

AWS_S3_MAX_MEMORY_SIZE在Django存储中做什么

来自分类Dev

“%-9s”是做什么的?

来自分类Dev

env COLUMNS =%S ps…做什么?

来自分类Dev

Python:%s 在这里做什么?

来自分类Dev

-s选项在GNU sed中是什么意思?

来自分类Dev

命令“ sed's〜~~ g'”中“〜”的目的是什么?

来自分类Dev

做什么->在python中做什么

来自分类Dev

这是做什么的?printf'\ t%s \ n'“ $ @”

来自分类Dev

&>在bash中做什么?

来自分类Dev

->在JavaScript中做什么?

来自分类Dev

Java中的“ this”做什么?

来自分类Dev

(:)在Haskell中做什么?

来自分类Dev

%||%在R中做什么?

来自分类Dev

_,在Python中做什么

来自分类Dev

...在Java中做什么?

来自分类Dev

在QBasic中ON做什么?

来自分类Dev

“:”在Python中做什么

来自分类Dev

\在python中做什么?

来自分类Dev

(:)在Haskell中做什么?