我有两个文件.我想从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) 假设我A B $ D E在文件中有一些文本,我想用y替换$.我们怎么样?
我试过了sed 's/$/y' filename > filename1,但没办法.
基于: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)
如您所见,文件没有改变.我究竟做错了什么?
谢谢阅读
我有一个包含以下数据的文件:
1 abcd hello world 5000
Run Code Online (Sandbox Code Playgroud)
(注意:每个单词之间有15个空格,"hello world"是单个条目,其间有一个空格)
我必须用一个逗号(,)替换15个空格."你好"和"世界"之间的单一空间应该保持不变.
我已经尝试了sed和tr命令的各种组合,但没有任何工作.
我system( `sed -i 's/[ 0-9]+) //' fileName` );在perl脚本中有一行直到完成.但该文件未被编辑.
当我sed -i 's/[ 0-9]+) //' fileName在shell上运行它运行正常并按预期编辑文件.为什么他们会有不同的结果,我该如何解决?
我有一个案例,我需要一个文件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地址开头
from 来 F替换它我想使用,sed但我不知道如果sed可以用来匹配多个字符串,例如malc0de或abc或许我需要一个更完整的脚本然后只是一行存储字符串值在数组中.任何的想法?顺便说一句,使用的例子sed最受欢迎.
至今
d在sed中使用我可以删除行并将输出重定向到文件Run Code Online (Sandbox Code Playgroud)\#!/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
或者我想保存像ARRAY =(malc0de abcd)
然后代替捕获组我可以做$ {ARRAY [2]}它会起作用吗?或者我可以做一些像.net子串匹配之间的东西 from和F我复制结果的字符串变量.然后搜索我的字符串,例如malc0de,如果找到替换匹配结果的搜索模式?但我不知道bash ......
更新 使用awk脚本我很干净
Run Code Online (Sandbox Code Playgroud)1.1.1.1 www.abc.com 1.1.2.2 def.com 2.2.2.2 mnx.dbc.net
但是,我希望将ip地址后的第二列缩短为我自己选择的字符串,例如在第二列中我只接受
abc def …
我希望将file1.txt内容与file2.txt的最后n个文件内容进行比较.有人可以使用shell脚本中的任何内容帮助识别此逻辑.例如,如果file1.txt有10行,则应该比较file2.txt的最后10行的差异.
我需要从shell命令替换-Xmx1024m(更改1024为2048)standalone.conf.
我尝试这样做sed:
echo $(sed 's/1024/2048/g' standalone.conf) > standalone.conf.
Run Code Online (Sandbox Code Playgroud)
代码有效,但保存的文本丢失标签和换行符.
我是优雅单行的忠实粉丝.我正在尝试编写一个单行测试,在执行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)
...但我无法正确理解语法.
我怎样才能做到这一点?
我有如下文件的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空行后使用它应该开始其他新行.