Tag: sed

不包括来自sed / START /的第一行和最后一行,/ END /

考虑input: =sec1= some-line some-other-line foo bar=baz =sec2= c=baz 如果我只想处理= sec1 =例如我可以通过以下方式注释该部分: sed -e '/=sec1=/,/=[az]*=/s:^:#:' < input 差不多,差不多 这会对包括 “= sec1 =”和“= sec2 =”行的行进行注释,结果如下所示: #=sec1= #some-line #some-other-line # #foo #bar=baz # #=sec2= c=baz 我的问题是: 什么是最简单的方法来排除开始和结束行从/ START /,/结束/范围在SED ? 我知道在很多情况下,“s :::”爪子的细化可以在这个特定情况下给出解决scheme,但是我在这里是通用解决scheme。 在“ Sed – 一个介绍和教程 ”中,Bruce Barnett写道:“稍后我会告诉你如何限制一个命令,但不包括含有指定模式的行。”但是我没有find他真正显示的地方这个。 在“ 用于SED的有用的单行脚本 ”由Eric Pement编写的时候,我只能find一个包容性的例子: # print section of file between […]

如何在Mac OS X上使用GNU sed

在Mac OS 10.10.3中,我通过input以下命令安装了gnu-sed: brew install gnu-sed –default-names 当我再次input时,我收到消息: gnu-sed-4.2.2已经安装好了 但是,即使重新启动系统并重新启动terminal后,我仍然无法使用sed的GNU版本。 例如: echo a | sed 's_A_X_i' 返回:replace命令'i'中的坏标志 我应该怎么做才能使GNU版本工作? 这里是我的$ PATHvariables的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,但很快我会需要其他人),而不会造成损坏或不必要的混乱,将不胜感激。

创buildzip文件的文件夹并解压缩

如果我select一个zip文件并右键单击“解压缩”,则会创build一个带有zip文件名的文件夹,并将zip文件的全部内容解压缩到该文件夹​​中。 不过,我想通过shell转换几个zip文件。 但是当我这样做 unzip filename.zip 文件夹"filename"不会被创build,但所有的文件被提取到当前目录中。 我已经看过参数,但没有这样的参数。 我也试过了 for zipfile in \*.zip; do mkdir $zipfile; unzip $zipfile -d $zipfile/; done 但2. $ zipfile和4. $ zipfile的.zip扩展名必须用sed删除。 如果我做 for zipfile in \*.zip; do mkdir sed 's/\.zip//i' $zipfile; unzip $zipfile -d sed 's/\.zip//i' $zipfile/; done 它不工作。 如何正确地replace$zipfile的.zip扩展名? 有比shell脚本更简单的方法吗?

转换行结束符

我一直在使用d2u转换行结束符。 安装Puppy Linux后,我注意到它不是与d2u ,但dos2unix 。 然后我发现默认情况下Ubuntu缺失。 换行结束的另一种方法是什么?

修剪一行的最后3个字符而不使用sed或perl等

我有一个shell脚本输出这样的数据: 1234567890 * 1234567891 * 我需要删除只是最后三个字符“*”。 我知道我可以通过 (whatever) | sed 's/\(.*\)…/\1/' 但我不想使用sed来达到速度的目的。 它将始终是最后3个字符。 任何快速清理输出的方法?

如何删除文件中的每一行的前导空白?

我有一个这样的文件: for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < 100; i++) for (i = 0; i < […]

交换两列 – awk,sed,python,perl

我有一个大文件(280列宽,700万行!)的数据,我需要交换前两列。 我想我可以用某种awk for循环,打印$ 2,$ 1,然后范围到文件的结尾 – 但我不知道如何做范围部分,我不能打印$ 2 ,$ 1,$ 3 … $ 280! 我在这里看到的大多数列交换的答案是特定于具有可pipe理的列数的小文件,所以我需要一些不依赖于指定每个列号的东西。 该文件是制表符分隔的: Affy-id chr 0 pos NA06984 NA06985 NA06986 NA06989

如何在sed中逃避单引号?

如何在已经被引号包围的sedexpression式中转义单引号? 例如: sed 's/ones/one's/' <<< 'ones thing'

在sed中插入换行(Mac OS X)

如何在sed的replace部分插入换行符? 此代码不起作用: sed "s/\(1234\)/\n\1/g" input.txt > output.txt 其中input.txt是: test1234foo123bar1234 和output.txt应该是: test 1234foo123bar 1234 但是我感到这个: testn1234foo123barn1234 注意: 这个问题特别是关于“sed”的Mac OS X版本,社区已经注意到它的行为与Linux版本不同。

如何将包含斜线的variables传递给sed

实际上我知道这个问题的答案,但是我不止一次看到一些同事在这个问题上陷入困境,所以我认为这样做是值得的。 如果问题已经存在,我很乐意删除它。 所以在这里呢… 你如何将包含斜线的variables作为模式传递给sed 。 例如,如果我有以下variables: var="/Users/Documents/name/file" 我想把它传递给sed如下所示: sed "s/$var/replace/g" $file 但是我得到错误。 我怎样才能绕过这个问题呢?