Questions tagged «sed»

Sed(Stream EDitor)是POSIX环境的命令行编辑器。Sed根据编辑脚本处理一个或多个文件,并将结果写入标准输出。它是由贝尔实验室(Bell Labs)创建的,自70年代中期以来一直存在。

10
为什么sed无法将\ t识别为标签?
sed "s/\(.*\)/\t\1/" $filename > $sedTmpFile && mv $sedTmpFile $filename 我期望此sed脚本tab在每行之前插入一个,$filename但不是。由于某种原因,它t改为插入一个。
105 regex  bash  sed 

6
sed或awk:删除模式后的n行
如何在sed(或任何类似工具-例如awk)中混合模式和数字范围?我想要做的是匹配文件中的某些行,并在继续操作之前删除下n行,而我希望将其作为管道的一部分进行。
105 unix  sed  awk 

4
sed错误:“'s'命令的RHS上的无效引用\ 1”
我运行一些替换命令作为maven的colorize脚本的核心。其中的sed命令,使用正则表达式,在shell工作发现这里讨论。当前(无效)的实现可以在此处找到。 当我在脚本中包含命令的一种变体时,会发生不同的行为: 变体1: $ sed -re "s/([a-zA-Z0-9./\\ :-]+)/\1/g" 适应脚本: -re "s/WARNING: ([a-zA-Z0-9./\\ :-]+)/${warn}WARNING: \1${c_end}/g" \ 错误: shell输出的信息与我键入相同$ sed。奇怪!? 形式2: $ sed -e "s/\([a-zA-Z0-9./\\ :-]\+\)/\1/g" 适应脚本: -e "s/WARNING: \([a-zA-Z0-9./\\ :-]\+\)/${warn}WARNING: \1${c_end}/g" \ 错误: sed:-e表达式#7,字符59:`s命令的RHS上无效的引用\ 1
103 regex  sed  substitution 

11
如何使用sed,awk或gawk仅打印匹配的内容?
我看到许多示例和手册页,介绍如何使用sed,awk或gawk进行搜索和替换。 但就我而言,我有一个正则表达式,我想对文本文件运行以提取特定值。我不想进行搜索和替换。这是从bash调用的。我们来看一个例子: 正则表达式示例: .*abc([0-9]+)xyz.* 输入文件示例: a b c abc12345xyz a b c 听起来很简单,但我不知道如何正确调用sed / awk / gawk。我希望做的是从我的bash脚本中获得: myvalue=$( sed <...something...> input.txt ) 我尝试过的事情包括: sed -e 's/.*([0-9]).*/\\1/g' example.txt # extracts the entire input file sed -n 's/.*([0-9]).*/\\1/g' example.txt # extracts nothing
100 regex  unix  sed  awk  gawk 

6
如何将包含斜杠的变量传递给sed
如何将包含斜杠的变量作为模式传递给sed? 例如,如果我有以下变量: var="/Users/Documents/name/file" 我想这样传递sed: sed "s/$var/replace/g" "$file" 但是我得到了错误。我该如何解决这个问题?
100 bash  sed 

8
sed初学者:更改文件夹中的所有匹配项
我需要做一个正则表达式查找并替换文件夹(及其子文件夹)中的所有文件。linux shell命令将执行该操作吗? 例如,我要在所有文件上运行此文件,并用替换后的新文本覆盖旧文件。 sed 's/old text/new text/g'
98 regex  linux  shell  sed 

6
使用sed和grep / egrep搜索和替换
我正在使用egrep -R紧随其后的包含大约10个并集的正则表达式,例如: .jpg | .png | .gifetc。这很好用,现在我想将所有找到的字符串替换为.bmp 我在想类似的东西 egrep -lR "\.jpg|\.png|\.gif" . | sed "s/some_expression/.jpg/" file_it_came_form 因此,这里的问题是如何在其中执行类似的联合正则表达式,sed以及如何告诉它将更改保存到从中获取输入的文件中。
97 regex  sed  grep 

6
如何在Mac OS 10.10+上使用GNU sed,不再支持'brew install --default-names'
在Mac OS 10.10.3下,我通过键入以下命令安装了gnu-sed: brew install gnu-sed --default-names 再次键入时,收到消息: 已安装gnu-sed-4.2.2 但是,即使在重新启动系统并重新启动终端之后,我仍然无法使用GNU版本的sed。例如: echo a | sed ’s_A_X_i’ 返回:替换命令'i'中的错误标志 我应该怎么做才能使GNU版本正常工作?这是$ PATH变量中的路径。 /Users/WN/-myUnix /opt/local/bin /opt/local/sbin /usr/bin /bin /usr/sbin /sbin /usr/local/bin /Applications/calibre.app/Contents/MacOS /opt/ImageMagick/bin /usr/texbin 很抱歉,我的问题似乎很明显,但是我自己学习shell脚本,还不太了解如何安装UNIX程序。在Mac上使用GNU兼容命令(在这种情况下是sed,但不久以后我还将需要其他命令)的任何帮助而不会造成损坏或不必要的混乱的任何帮助将不胜感激。
95 macos  bash  sed  homebrew  gnu 

5
如何使用sed从字符串中提取文本?
我的示例字符串如下: This is 02G05 a test string 20-Jul-2012 现在我要从上面的字符串中提取02G05。为此,我用sed尝试了以下正则表达式 $ echo "This is 02G05 a test string 20-Jul-2012" | sed -n '/\d+G\d+/p' 但是上面的命令什么都不打印,我相信这是因为它无法与我提供给sed的模式相匹配。 所以,我的问题是我在这里做错了什么以及如何纠正它。 当我使用python尝试上述字符串和模式时,得到了我的结果 >>> re.findall(r'\d+G\d+',st) ['02G05'] >>>
95 regex  bash  sed 

10
使用变量替换Shell脚本中的字符串
我正在使用以下代码替换shell脚本中的字符串。 echo $LINE | sed -e 's/12345678/"$replace"/g' 但它已被替换为$replace而不是该变量的值。 有人能告诉我出了什么问题吗?
93 unix  shell  sed 


2
bash中用(下划线)_替换空格的最简单方法[关闭]
在这里很难说出要问什么。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以目前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 10年前关闭。 最近,我不得不编写一个小脚本来解析XenServer中的VM,并且由于VM的名称通常在Windows XP或Windows Server 2008中带有空格,因此我必须修剪这些空格并用下划线_代替。我找到了使用sed进行此操作的简单解决方案,它是处理字符串操作时的绝佳工具。 echo "This is just a test" | sed -e 's/ /_/g' 退货 This_is_just_a_test 还有其他方法可以做到这一点吗?
91 bash  sed 

3
用文字字符串sed-不输入文件
这应该很容易:我想对文字字符串而不是输入文件运行sed。如果您想知道为什么,例如是编辑存储在变量中的值,而不必是文本数据。 当我做: sed 's/,/','/g' "A,B,C" 其中A,B,C是我要更改为A','B','C的文字 我懂了 Can't open A,B,C 好像它认为A,B,C是一个文件。 我试着用管道将其回显: echo "A,B,C" | sed 's/,/','/g' 我得到提示。 正确的做法是什么?
91 linux  unix  sed 

5
sed忽略了不匹配的行
如何sed根据某些表达式使过滤器匹配的行,但忽略不匹配的行,而不是让它们打印? 作为一个真实的例子,我想scalac对一组文件运行(Scala编译器),并从其-verbose输出中读取.class创建的文件。scalac -verbose输出一堆消息,但我们只对形式的消息感兴趣[wrote some-class-name.class]。我当前正在做的是这(|&是bash 4.0将stderr传递到下一个程序的方式): $ scalac -verbose some-file.scala ... |& sed 's/^\[wrote \(.*\.class\)\]$/\1/' 这将从我们感兴趣的消息中提取文件名,但也将使所有其他消息保持不变!当然,我们可以这样做: $ scalac -verbose some-file.scala ... |& grep '^\[wrote .*\.class\]$' | sed 's/^\[wrote \(.*\.class\)\]$/\1/' 可以,但是看起来很像解决实际问题,即如何指示sed忽略输入中不匹配的行。那么我们该怎么做呢?
91 sed 

7
在每行末尾添加文本
我在Linux命令行上并且有文件 127.0.0.1 128.0.0.0 121.121.33.111 我想要 127.0.0.1:80 128.0.0.0:80 121.121.33.111:80 我记得我的同事为此使用sed,但是在阅读sed手册后仍不清楚如何在命令行上执行此操作?
90 sed 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.