Questions tagged «sed»

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

3
如何仅对包含给定字符串的行进行sed处理?
输入: Select ASDF 325 sdfg sdflk lk Select TRG 46sdg rasdftz fsgs 45 Select ASDF 6ffg sdfg 4456 sdrg 输出: Select ASDF 325 XXXX sdflk lk Select TRG 46sdg rasdftz fsgs 45 Select ASDF 6ffg XXXX 4456 sdrg 简而言之,我需要将“ sed”“ sdfg”“ sed”为“ XXXX”。 但是:仅在包含“选择ASDF”字符串的行中。我该怎么做?(sed,awk等:\)
13 sed  awk 

3
使用sed干净地交换两个字符串的所有出现
假设我有一个包含StringA和StringB多次出现的文件。我想用StringB替换所有出现的StringA,并(同时)用StringA替换所有出现的StringB。 现在,我正在做类似的事情 cat file.txt | sed 's/StringB/StringC/g' | sed 's/StringA/StringB/g' | sed 's/StringC/StringA/g' 这种方法的问题在于它假定StringC在文件中没有出现。尽管实际上这不是问题,但是此解决方案仍然让人感到不舒服-也就是说,这就像是学习更多unix魔术的机会。:)
13 sed 


2
用零替换缺失值空白
我有大约30K行的制表符分隔文本文件input.txt,我想检查每行(s1..s30K行)是否有缺失值(即空白),并用零值填充缺失值。请参见out.txt input.txt id no1 no2 no3 no4 s1 23 34 45 12 s2 4 4 s3 4 8 0 out.txt id no1 no2 no3 no4 s1 23 34 45 12 s2 0 4 4 0 s3 4 0 8 0

3
删除单词中的最后一个字符,但前提是该字符存在-以bash开头
仅在有最后一个字符的情况下如何删除? 输入: OpenOffice.org/m openOffice.org/ozm 人 Pfg。 菲尔 教授 分别 根/米 盎司/盎司 所需的输出: OpenOffice.org openOffice.org 佩尔斯 聚乙二醇 菲尔 教授 回应 伦斯特 伦斯特 到目前为止,我只剩下了点,但不幸的是最后一个sed命令也删除了字母g: $ cat filename | grep "\." | cut -d"/" -f1 | sed 's/.$//'

3
AWK-仅在特定列中替换一个字符
我有一个像这样的文件: 2018.01.02;1.5;comment 1 2018.01.04;2.75;comment 2 2018.01.07;5.25;comment 4 2018.01.09;1.25;comment 7 我想.用逗号替换第二列中的所有点,,就像我将sed 's/\./\,/g' file如何使用sed或最好awk仅将其应用于第二列一样,所以我的输出应如下所示: 2018.01.02;1,5;comment 1 2018.01.04;2,75;comment 2 2018.01.07;5,25;comment 4 2018.01.09;1,25;comment 7

4
从Unix变量中删除换行符
我有一个变量的值是使用sql查询找到的。 我想从该变量中删除新行字符,因为我想将此变量与另一个变量连接起来。下面是代码: dt=`sqlplus -s user/pwd@servicename <<EOF set feedback off; set head off; select replace(to_char((sysdate-7),'YYYYMonDD')||'_'||to_char((sysdate-1),'YYYYMonDD'),chr(10), '') from dual; exit; EOF` echo "test $dt"
13 sed 

2
如何在不更改文件所有者的情况下将命令与sudo一起使用?
当我使用sudo对文件进行某些活动时,这些文件会更改所有权。如何在不更改文件所有者的情况下将命令与sudo一起使用? 示例文件archivos35.sh来自apache,但我使用sed(与usr admin sudo一起使用) $ ls -l -rwxr-xrw-. 1 apache apache 181 Aug 5 11:56 archivos35.sh adminsudo 用户- sudo sed -i s/old/new/g archivos35.sh 但是使用sudo执行该命令会更改文件的所有者 $ ls -l -rwxr-xrw-. 1 admin apache 181 Aug 5 11:56 archivos35.sh 如何避免将命令与sudo一起使用来更改文件的所有者?我只想在不修改文件所有者的情况下对文件进行更改。
12 sed  sudo  ownership 

3
有/无尾随空格匹配一个单词有什么区别?
我正在学习shell脚本,为此我正在使用HackerRank。sed在同一站点上有一个与之相关的问题:'Sed'命令#1: 对于给定输入文件中的每一行,用“ this”转换单词“ the”的首次出现。搜索和转换应严格区分大小写。 首先,我尝试了 sed 's/the/this/' 但是在那个示例测试案例中失败了。然后我尝试 sed 's/the /this /' 而且有效。那么,问题来了,空白产生了什么区别?我在这里想念什么吗?
12 sed  whitespace 


3
合并两个文件,一次合并一列
我有以下格式的2个大文件(3000列,15000行) file1(制表符分隔): 1/0 0/0 0/0 0/0 1/1 0/0 1/1 0/1 0/0 file2(制表符分隔): 3 5 2 1 7 10 3 4 3 我想将每个文件的第一列中的值与“:”分隔符组合在一起,然后移至第二,第三等列。所需的输出(制表符分隔): 1/0:3 0/0:5 0/0:2 0/0:1 1/1:7 0/0:10 1/1:3 0/1:4 0/0:3 效率并不重要,因此任何语言都可以。如果这已经被问过了,我深表歉意。

3
如何在不再次调用sed或awk的情况下从字符串中删除点字符?
我有一个hostlist.txt包含以下内容的文件: host1.mydomain.com host2.mydomain.com anotherhost www.mydomain.com login.mydomain.com somehost host3.mydomain.com 我有以下小脚本: #!/usr/local/bin/bash while read host; do dig +search @ns1.mydomain.com $host ALL \ | sed -n '/;; ANSWER SECTION:/{n;p;}'; done <hostlist.txt \ | gawk '{print $1","$NF}' >fqdn-ip.csv 输出到fqdn-ip.csv: host1.mydomain.com.,10.0.0.1 host2.mydomain.com.,10.0.0.2 anotherhost.internal.mydomain.com.,10.0.0.11 www.mydomain.com.,10.0.0.10 login.mydomain.com.,10.0.0.12 somehost.internal.mydomain.com.,10.0.0.13 host3.mydomain.com.,10.0.0.3 我的问题是如何删除.逗号前的内容而不进行调用sed或gawk再次调用?我可以在现有步骤中执行某些步骤,sed还是gawk可以删除点的调用? hostlist.txt 将包含数千个主机,因此我希望我的脚本快速高效。

1
在sed中使用多个感叹号有什么意义?
POSIX sed文档说: 一个功能可以前面有一个或多个'!' 字符,在这种情况下,如果地址未选择模式空间,则应应用该功能。零个或多个<空白>字符应在第一个'!'之前接受 字符。尚不确定<blank>字符是否可以跟在'!'之后 字符,符合标准的应用程序不得使用“!” 带有<blank>字符的字符。 因此,使用任何POSIX sed,我们都可以: sed -e '/pattern/!d' file 与写作相同: sed -e '/pattern/!!d' file 而!!!d和n感叹号的标志仍然是罚款(含三级测试sed的版本传家宝工具箱中)。我看不到多个感叹号之间有什么好处。 为什么规范中允许使用该语法?在实际应用中它如何有用? 在这种情况下,GNU sed似乎不兼容,如果我们使用多个感叹号,它将抱怨: $ sed -e '/pattern/!!d' file sed: -e expression #1, char 11: multiple `!'s
12 sed  posix 

1
关于便携式sed -e ... db或!??
在此编辑中, StéphaneChazelas通过 再次插入xpression break和另一个xpression语句来对我的格式进行POSIX 化 。现在,我想问问他为什么在评论中,但是答案已经是修订版18,并且几乎所有以前的版本都已经得到了类似免费赠品的感谢(如果您可以看到已删除的评论,您将会知道我的意思是)。另外,我认为我已经足够了解为什么用一种可能更有用的方式来表达这一点。所以在这里...sed-e-e 我通常会尽量将总sed -e表情数保持在一个,但我也更倾向于尽可能符合规范,尤其是当差异不超过a <space>和an时-e。但是,如果我不明白为什么应该这样做,我将无法做到这一点。以下是我所了解的当前状态的简要摘要: 在' -e '休息能够方便地站在了一个sed脚本\n在ewline突破sed命令行语句...... 我承认模糊为什么 sed {函数中}的\n右括号必须在前面加一条斜线,如下所示: 的<right-brace>前面应带有a,<newline>并且可以在<blank>字符之前或之后。 一个\newline休息也同样需要进行以下任何使用...... a,b,c,i,r,t,w,或:。 但是我不清楚{函数}定义与!not运算符之间的关系。我在规范中唯一提到否定运算符的地方是: 一个功能之前可以有一个或多个!字符,在这种情况下,如果地址未选择模式空间,则应应用该功能。 这是否意味着使用a !表示{括号}?$!命令是什么-它们是否也应被' -e '中断分隔?当Stéphane最近POSIX确定我的答案时,这是解决了什么问题? 我认为它要么是!否定运算符,要么是b他在编辑中处理的牧场语句(或者可能是同时出现),但我不知道,也不想。如果它是唯一的b牧场语句,那么我相信一个d会在它的地方做,消除了需要' -e '休息,但我宁愿是一个hazarding前三次一定POSIXified答案。你能帮我吗? 毕竟我确实冒险了,但是没有很大的把握...
12 shell  sed  posix 

4
用“ foo”注释从最后注释行到行的所有行
考虑一个文本文件users.txt: #alice #bob charlie dotan eric 我需要注释所有内容(从(独占)最后一个注释行到(包括))dotan。结果如下: #alice #bob #charlie #dotan eric 有没有一个好的sed内线来做到这一点?我会对任何工具感到满意,而不仅仅是sed,真的。 目前,我正在获取最后一条注释行的行号,如下所示: $ cat -n users.txt | grep '#' | tail -n1 2 #bob 然后,我添加一个并用注释sed: $ sed -i'' '3,/dotan/ s/^/#/' users.txt 我知道我很聪明,可以将所有这些与一些bc丑陋的东西放在一起。当然必须有一种更清洁的方法吗?

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.