标签: sed

使用sed删除包含多个字符串的所有行

我有两个文件.我想从log.txt中删除所有字符串(在url.txt中)

第一个文件是url.txt

google.com
bing.com
yahoo.com
Run Code Online (Sandbox Code Playgroud)

第二个文件是log.txt

   1.2.3 www.google.com bot
   626.7.7 www.yahoo.com browser
   35.5.6 www.test.com  search
   44.6.6 www.bing.com  web
Run Code Online (Sandbox Code Playgroud)

我想要这个输出:

35.5.6 www.test.com  search
Run Code Online (Sandbox Code Playgroud)

此代码适用于字符串,但我想从log.txt中删除所有字符串(在url.txt中)

sed -i '/$string/d' log.txt
Run Code Online (Sandbox Code Playgroud)

unix bash shell awk sed

-1
推荐指数
1
解决办法
784
查看次数

如何使用sed命令替换"$"?

假设我A B $ D E在文件中有一些文本,我想用y替换$.我们怎么样?

我试过了sed 's/$/y' filename > filename1,但没办法.

regex linux sed

-1
推荐指数
1
解决办法
47
查看次数

Sed似乎工作但文件不会改变

基于:sed:替换部分行

我想修改我的sysctl.conf文件.包含的行PermitTunnel something必须更改为PermitTunnel point-to-point.

因此,在之前的帖子中,我会使用:

sed -e 's/PermitTunnel.*$/PermitTunnel point-to-point/g'
Run Code Online (Sandbox Code Playgroud)

包括在我的文件行的末尾.

既然-n没有使用,我想我应该在标准输出中接收我操作的结果.然后我执行它并得到(注意我正在使用-2--to-不仅仅是为了看看我是否可以根据需要修改文件,因为在这种情况下文件已经有了所需的行):

root@debian:/home/dit# sed -e 's/PermitTunnel.*$/PermitTunnel point-2-point/g'/etc/sysctl.conf 
PermitTunnel point-2-point
Run Code Online (Sandbox Code Playgroud)

但后来我做了:

root@debian:/home/dit# cat /etc/sysctl.conf | grep PermitTunnel
PermitTunnel point-to-point
Run Code Online (Sandbox Code Playgroud)

如您所见,文件没有改变.我究竟做错了什么?

谢谢阅读

bash sed

-1
推荐指数
1
解决办法
681
查看次数

在unix中用逗号替换多个空格

我有一个包含以下数据的文件:

1               abcd               hello world               5000
Run Code Online (Sandbox Code Playgroud)

(注意:每个单词之间有15个空格,"hello world"是单个条目,其间有一个空格)

我必须用一个逗号(,)替换15个空格."你好"和"世界"之间的单一空间应该保持不变.

我已经尝试了sed和tr命令的各种组合,但没有任何工作.

unix bash sed tr

-1
推荐指数
1
解决办法
1489
查看次数

Perl系统()不能与sed一起使用

system( `sed -i 's/[ 0-9]+) //' fileName` );在perl脚本中有一行直到完成.但该文件未被编辑.
当我sed -i 's/[ 0-9]+) //' fileName在shell上运行它运行正常并按预期编辑文件.为什么他们会有不同的结果,我该如何解决?

regex bash perl sed

-1
推荐指数
1
解决办法
154
查看次数

使用sed或脚本解析,重新格式化日志文件?

我有一个案例,我需要一个文件post-process.样本格式如下: -

bigspeedpro.com Intel::DOMAIN   from http://malc0de.com/bl/BOOT via intel.criticalstack.com     F
1.1.1.1 Intel::DOMAIN   from http://abcd.com/bl/BOOT via intel.criticalstack.com     F
Run Code Online (Sandbox Code Playgroud)

预期产量为: -

1.1.1.1 abcd
Run Code Online (Sandbox Code Playgroud)

解析如下: -

  • 任何不以IP地址开头的内容都会删除该行
  • 如果以IP地址开头

    • 删除Intel :: DOMAIN
    • 之间根据以下字符串出现 from F替换它
    • 例如malc0de或abcd

我想使用,sed但我不知道如果sed可以用来匹配多个字符串,例如malc0de或abc或许我需要一个更完整的脚本然后只是一行存储字符串值在数组中.任何的想法?顺便说一句,使用的例子sed最受欢迎.

至今

  • 我知道d在sed中使用我可以删除行并将输出重定向到文件
  • 我知道如何匹配正则表达式而不是IP地址[^ a-zA-Z]
  • 我基于多项选择或字符串而无法更换
\#!/bin/bash          
sed -i s/\[a-zA-Z]\/d test ./infile > testme.txt
sed -i s/\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}/s+\Intel::DOMAIN\\s*from(.*?)\s+F\1malc0de
Run Code Online (Sandbox Code Playgroud)

或者我想保存像ARRAY =(malc0de abcd)

然后代替捕获组我可以做$ {ARRAY [2]}它会起作用吗?或者我可以做一些像.net子串匹配之间的东西 fromF我复制结果的字符串变量.然后搜索我的字符串,例如malc0de,如果找到替换匹配结果的搜索模式?但我不知道bash ......

更新 使用awk脚本我很干净

1.1.1.1 www.abc.com
1.1.2.2 def.com
2.2.2.2 mnx.dbc.net
Run Code Online (Sandbox Code Playgroud)

但是,我希望将ip地址后的第二列缩短为我自己选择的字符串,例如在第二列中我只接受

abc def …

regex linux bash ubuntu sed

-1
推荐指数
1
解决办法
181
查看次数

使用行号在linux中进行文件比较

我希望将file1.txt内容与file2.txt的最后n个文件内容进行比较.有人可以使用shell脚本中的任何内容帮助识别此逻辑.例如,如果file1.txt有10行,则应该比较file2.txt的最后10行的差异.

linux awk sed

-1
推荐指数
1
解决办法
34
查看次数

使用sed执行替换时丢失制表符和换行符

我需要从shell命令替换-Xmx1024m(更改10242048)standalone.conf.

我尝试这样做sed:

echo $(sed 's/1024/2048/g' standalone.conf) > standalone.conf.
Run Code Online (Sandbox Code Playgroud)

代码有效,但保存的文本丢失标签和换行符.

linux bash replace sed

-1
推荐指数
1
解决办法
55
查看次数

在bash,curl,grep序列之后,我如何回应"通过"或"失败"?

我是优雅单行的忠实粉丝.我正在尝试编写一个单行测试,在执行http请求和搜索后输出"pass"或"fail".我尝试过这样的事情:

curl "http://haystack.io" | sed 's/.*?needle.*/PASS/' || echo FAIL
Run Code Online (Sandbox Code Playgroud)

......但这不会失败.

还尝试过:

curl "http://haystack.io" | if [$(grep -oE "needle") = "needle"]; then echo PASS; else echo FAIL; fi
Run Code Online (Sandbox Code Playgroud)

...但我无法正确理解语法.

我怎样才能做到这一点?

macos bash grep curl sed

-1
推荐指数
1
解决办法
367
查看次数

用于读取文件和用|替换新文件的shell脚本 符号

我有如下文件的txt文件.

abc
def
ghi

123
456
789
Run Code Online (Sandbox Code Playgroud)

预期产量是

abc|def|ghi
123|456|789
Run Code Online (Sandbox Code Playgroud)

我想用管道符号(|)替换新行.我想在egrep.After空行后使用它应该开始其他新行.

bash shell awk solaris sed

-1
推荐指数
1
解决办法
147
查看次数

标签 统计

sed ×10

bash ×8

linux ×4

awk ×3

regex ×3

shell ×2

unix ×2

curl ×1

grep ×1

macos ×1

perl ×1

replace ×1

solaris ×1

tr ×1

ubuntu ×1