Questions tagged «sed»

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

7
替换除最后x次出现以外的字符
我有一个文件,其中有一堆与IP相关的主机名看起来像这样: x-cluster-front-1 192.168.1.2 x-cluster-front-2 192.158.1.10 y-cluster-back-1 10.1.11.99 y-cluster-back-2 10.1.157.38 int.test.example.com 59.2.86.3 super.awesome.machine 123.234.15.6 我希望它看起来像这样: x-cluster-front-1 192.168.1.2 x-cluster-front-2 192.158.1.10 y-cluster-back-1 10.1.11.99 y-cluster-back-2 10.1.157.38 int-test-example-com 59.2.86.3 super-awesome-machine 123.234.15.6 我该如何更换。为了方便第二列进行排序,在第一列中使用-(连字符)来表示(点)?我当时想用sed替换点直到第一个空格,或者替换除最后三个点以外的所有点,但是我在理解正则表达式和sed时遇到了麻烦。我可以执行简单的替换,但是这很麻烦! 这是我一直用bash编写的较大脚本的一部分。我被困在这一部分。


1
如果找不到模式,是否可以使sed失败?
我需要在某些文件中查找并替换某些模式,但是如果找不到模式,则需要它返回1或其他值。 我可以单独使用sed执行此操作,还是需要使用其他命令检查该模式是否存在? 有什么建议么?
9 sed 

1
在sed或awk中替换多行[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 5年前关闭。 我正在尝试使用sed或awk替换smb文件中的5行,但是我只是不知道如何处理换行符。
9 sed  awk  scripting  perl 

6
抓取文件的某些内容
因此,我知道存在解决此问题的工具,因为我已经听说过它们,但我不知道它们是什么。 我想做类似过滤掉所有数据的事情,但是/ etc / passwd中的用户名。 例如,我想从以下文件中获取user1,user2和user3。在这种情况下,逻辑可以是“将文本限制为文件每一行的第一个':'。 user1:x:1:4 user2:x:2:5 user3:x:3:6 输出为: user1 user2 user3
9 files  sed  awk  cut 

3
如何从文件末尾删除最后一个逗号分隔符?
如何在Linux上的文件中删除最后一个逗号分隔符? 文件示例: "is_supported_kafka_ranger" : "true", "kafka_log_dir" : "/var/log/kafka", "kafka_pid_dir" : "/var/run/kafka", "kafka_user" : "kafka", "kafka_user_nofile_limit" : "128000", "kafka_user_nproc_limit" : "65536", 预期成绩: "is_supported_kafka_ranger" : "true", "kafka_log_dir" : "/var/log/kafka", "kafka_pid_dir" : "/var/run/kafka", "kafka_user" : "kafka", "kafka_user_nofile_limit" : "128000", "kafka_user_nproc_limit" : "65536"

1
sed中〜的解释
我现在正在学习sed。这个波浪号“〜”让我感到困惑。 例如,命令 sed -n '1~2 w output.txt' input.txt 正在打印奇数行(到文件output.txt)。 在同一教程中,还给出了跳过从1到2的行,然后开始打印第2行旁边的行的情况,以防我们使用 sed -n '1~2 p' input.txt 这个波浪号的绝对解释是什么?
9 sed 

3
如何使用sed或ex用新的文本块(代码)替换一个块(多行代码)?
我必须用另一个文本块替换文件中的大文本块(shell脚本代码)。 我如何使用sed替换多行字符串给我留下了深刻的印象?antak回答 ,多行替换Bruce Ediger回答 但是我在使用它们时遇到了一些麻烦。 antak在他的回答中已经提到过,1h;2,$H;$!d;g;不建议将大文件()流到整个缓冲区,因为大文件会导致内存过载。 我知道sed可以与块功能一起使用,以保持块外的文本不变。我要使用此功能。但是如果我用 sed -i '/marker1/,/marker2/s/.*/new text (code)/' filename 它将为每个流重复插入新文本(代码)。因此,我必须将可视块作为一个流,使用类似于antak先前所建议的内容,但要针对该块(而不是针对整个文件)。 正如Bruce Ediger所提到的,可以尝试使用以(dot)ex开头的附加功能,但是我的新文本(code)包含以dot开头的行,可以将其视为附加语法的点。在这种情况下如何使用?a. ex'的dd'行数'可能会删除多行,但是如果我在/ marker1 /和/ marker2 /之间有一个块,行数不固定(可变)将被新文本(代码)替换,该怎么办呢?
9 sed  ex 

7
在保留减号的同时删除某些列中的数值?
我有以下数据框,该数据框仅在奇数列中以负数无限地水平和垂直地继续: -1 2 3 4 -5 9 2 3 -4 5 -6 11 我想要第二,第四和第六完整列(或每个偶数列),而负号仅来自第一,第三和第五(或每个奇数列),所以我得到了: - 2 4 - 9 3 - 5 - 11 最终结果如下: -2 4 -9 3 -5 -11 因此,我需要不改变偶数列和奇数列的值,如果有一个负值,则保留-仅值,如果有一个正值,则将其丢弃。 有没有办法用awk / sed做到这一点? 据我所知,这是差不多的了: awk '{ for (i=2;i<=NF;i+=2) $i="" }1' FILE.txt | sed 's/[0-9,.]*//g'



2
在“ sed”内执行命令
我有一个保存在文本文件中的随机内存地址列表,我需要将sed它们删除,解码并将它们保存回我的文件中。但是,我尝试执行的解码操作是在一段时间前创建的C ++程序中处理的。我现在遇到的问题是在sed命令中执行C ++ 。也就是说,我想向后引用需要解码的部分,并将其用作我的C ++程序中的参数。我写了以下命令: cat $1 | sed -r 's/(0[Xx])([0-9A-Za-z]{1,8})/\1`./convAddrs \2`/g'; 在我有机会阅读这篇文章的答案之前,我说这sed不执行命令。是真的sed不允许执行命令吗?如果是这样,假设我编写的命令是一个有效的sed序列,我将如何编写它perl?

3
使用sed提取字符串的一部分
ls lib/oracle-11.2.0.3.0.txt | sed 's/lib.\([oracle.*]\)\.txt/\1/' 它提供整个字符串,而不仅仅是oracle部分,直到.txt我在做什么错了? 我可以使用awk如下进行操作,但是不知道为什么sed没有给出想要的结果。 echo "lib/oracle-11.2.0.3.0.txt" | awk -F/ '{print substr($2,1,index($0,".txt")-1);}'

4
sed为什么给我一个关于未终止的s的错误?
我在bash脚本中有一组sed替换项,并且遇到有关未终止的s命令的错误。sed行如下所示: sed -n -e "s/TMPFOO1/$FOO1/" -e "s/TMPFOO2/$FOO2/" -e "s/TMPFOO3/$FOO3/" -e "s/TMPFOO4/$FOO4/" -e "s/TMPFOO5/$FOO5/" /home/foo/template > /home/foo/template/finishedresult 但是由于某种原因,bash不喜欢这样,我得到了一个关于 sed: -e expression #4, char 69: unterminated `s' command 我在这里想念什么?我如何让SED输入变量?在我看来,他们都被解雇了。

2
sed:替换数字
我正在尝试为我安装/升级Ubuntu时编写一些安装脚本。我在解决问题logrotate.d: /var/log/ufw.log { rotate 7 weekly missingok notifempty compress delaycompress sharedscripts postrotate reload rsyslog >/dev/null 2>&1 || true endscript } 我想更改rotate nnn为rotate 99。必须使nnn为任意位数(通常为1或2),但不影响该postrotate行。 我已经尝试了这两个,但是我都不需要(并且我用nnn是1,2或3位数字进行了测试)。 sudo sed 's/rotate[0-9]*/rotate 99/' /etc/logrotate.d/ufw sudo sed 's/^rotate[0-9]/rotate 99/' /etc/logrotate.d/ufw

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.