Questions tagged «sed»

sed是用于过滤和转换文本的命令行流编辑器。


3
找到位置,然后使用sed进行更改
该脚本使用sed将所有“”更改为“新内容”。使用sed或其他方法,如何仅在yyy之后更改“”? cat >sample.txt <<EOF xxx: "" yyy: "" } EOF sed --expression='s/""/"new stuff"/' sample.txt
11 sed 

5
在保持顺序的同时删除相邻的重复行
我有一个带有一列的文件,每个文件的名称重复多次。我想将每个重复压缩为一个,同时保留与相同名称的其他重复不相邻的任何相同名称的重复。 例如,我想将左侧转向右侧: Golgb1 Golgb1 Golgb1 Akna Golgb1 Spata20 Golgb1 Golgb1 Golgb1 Akna Akna Akna Akna Spata20 Spata20 Spata20 Golgb1 Golgb1 Golgb1 Akna Akna Akna 这就是我一直在使用的perl -ne 'print if ++$k{$_}==1' file.txt > file2.txt 方法:但是,此方法仅使左边代表一个(即,Golb1和Akna不再重复)。 有没有一种方法可以为每个块保留唯一的名称,同时保留在多个不相邻的块中重复的名称?
11 awk  sed  sort  uniq 


2
sed-在多个文件中应用更改
我有数百个包含“ </foo:bar>” 的文件 cc bb aa </foo:bar> dd xx vv 我想一次全部更改为 cc bb aa </foo:bar> 当我给它确切的文件名时,sed效果很好 sed -i“ / </ foo:bar> / q” 99999.txt 但是当我尝试一次更改所有这些内容时,我没有任何结果。 sed -i "/<\/foo:bar>/q" *.txt

3
打印以特定字符串开头的列
我有一个看起来像这样的文件: ID101 G T freq=.5 nonetype ANC=.1 addinfor ID102 A T freq=.3 ANC=.01 addinfor ID102 A T freq=.01 type=1 ALT=0.022 ANC=.02 addinfor 如您所见,每行的列数略有不同。我特别想要第1、2、3、4列和以ANC= 所需的输出: ID101 G T freq=.5 ANC=.1 ID102 A T freq=.3 ANC=.01 ID102 A T freq=.01 ANC=.02 我通常使用aawk命令来解析文件: awk 'BEGIN {OFS = "\t"} {print $1, $2, $3, $4}' …

8
将文本文件拆分为固定单词数的行
相关但没有令人满意的答案:如何将大文本文件拆分为500个单词左右的块? 我试图将一个文本文件(http://mattmahoney.net/dc/text8.zip)一行都包含> 10 ^ 7个单词,然后将其拆分为N个单词的行。我当前的方法可行,但相当缓慢且难看(使用shell脚本): i=0 for word in $(sed -e 's/\s\+/\n/g' input.txt) do echo -n "${word} " > output.txt let "i=i+1" if [ "$i" -eq "1000" ] then echo > output.txt let "i=0" fi done 关于如何使它更快或更紧凑的任何提示?

3
可以将tr命令链接起来以避免流水线中有多个tr进程吗?
我有一堆txt文件,我想将它们输出为小写字母,只有字母和每行一个字,我可以tr在管道中使用多个命令来完成此操作,如下所示: tr -d '[:punct:]' <doyle_sherlock_holmes.txt | tr '[:upper:]' '[:lower:]' | tr ' ' '\n' 可以一次扫描吗?我可以写一个C程序要做到这一点,但我觉得有一种方法使用去做tr,sed,awk或perl。
11 sed  awk  perl  tr 

5
如何使用Shell从MAC地址派生IPv6地址?
我们知道我们可以使用MAC地址来创建接口标识符,例如,对于本地链路的IPv6地址,该标识符在网络中应该是唯一的。 该图显示了执行此操作的方法: 我的问题是: 如何使用awk或从MAC创建IPv6地址sed? 或者是否有任何命令可以为我提供特定MAC的链接本地IPv6地址(类似createIPv6 myMAC)?
11 sed  awk  ipv6  mac-address 


2
如何在文件中每次出现时删除多行?
说我有这个857835线文件,其中包含以下内容: a1 rubbish1 rubbish2 rubbish3 rubbish4 a1 rubbish5 rubbish6 rubbish7 rubbish8 我希望删除a1下一行(rubbish1和rubbish5在本示例中)的所有出现。我该怎么做? 我尝试grep 'a1' -v -A1无济于事,而我的sed skillz并不是很好:} 这次我的Google-fu无法帮助我,请帮助!

6
从给定的模式集中删除不以模式开头的行
我有一个包含如下数据的文件: report aaaaaaaa - .. -th bbbbbbbbb -to ccccccccc .. --. 问题:我想删除任何不以以下字符串开头的行: report -th -to 这意味着所需的输出将删除所有那些中间不需要的点和哈希,并且将如下所示: report aaaaaaaa -th bbbbbbbbb -to ccccccccc sed/ awk/ grep/等任何解决方案,将工作。

2
sed:匹配两行
我有一个文本文件,其中记录分为两行。我想将它们放在一行上。记录如下所示: 2013-07-29 apt-get install git 2013-07-29 apt-get install rsync 2013-07-31 apt-get install nmap 2013-08-02 apt-get install cifs-utils 2013-08-05 apt-get install telnet 我想得到以下内容: 2013-07-29 apt-get install git 2013-07-29 apt-get install rsync 2013-07-31 apt-get install nmap 2013-08-02 apt-get install cifs-utils 2013-08-05 apt-get install telnet 我尝试使用sed,但无法匹配两行。有技巧sed吗,还是有更好的工具?

2
替换perl和sed中不可打印的字符
我需要用文件中的空格替换一些不可打印的字符。 具体来说,所有字符0x00最多到0x1F,但0x09(TAB),0x0A(新行),0x0D(CR)除外 到目前为止,我只需要替换0x00字符即可。因为我以前的操作系统是AIX(没有GNU命令),所以我不能使用sed(虽然可以,但是有一些限制)。因此,我找到了使用的下perl一条命令,该命令按预期工作: perl -p -e 's/\x0/ /g' $FILE_IN > $FILE_OUT 现在我正在Linux上工作,因此我希望能够使用sed命令。 我的问题: 此命令是否适合替换那些字符?我尝试过,而且似乎可行,但是我想确保: perl -p -e 's/[\x00-\x08\x0B\x0C\x0E-\x1F]/ /g' $FILE_IN > $FILE_OUT 我以为perl -p工作sed。那么,为什么上一个命令起作用(至少不会失败),而下一个命令却不起作用? sed -e 's/[\x00-\x08\x0B\x0C\x0E-\x1F]/ /g' $FILE_IN > $FILE_OUT 它告诉我: sed:-e表达式#1,字符34:无效的归类字符
11 sed  perl 

7
如何用新行替换单词
我有一个包含以下数据的文本文件,每行以结尾|END|。 T|somthing|something|END|T|something2|something2|END| 我tryig更换|END|与\n新行的sed。 sed 's/\|END\|/\n/g' test.txt 但这会产生错误的输出,如下所示: T | s o m e ... 但是我想要的是: T|somthing|something T|something2|something2 我也尝试过tr。它也不起作用。

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.