Questions tagged «sed»

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



3
差异,仅显示正确文件中的修改行
我有文件a,b并且我想输出b自从克隆以来更改的行a。仅修改的行,没有周围的上下文,没有diff偏移标记。 如何使用Shell脚本来做到这一点?(没有Python / Perl / PHP / ...) Sed和awk是可接受的解决方案。 现在,我正在使用--suppress-common-lines diff -y并使用正则表达式反向引用sed来仅在空白之后获取正确的部分。肯定有更好的办法? 使用perl(这是被禁止的),我会做这样的事情: diff -y --suppress-common-lines -W $COLUMNS Eclipse_Preferences_Export_*.epf | perl -pe 's/.*\t|\t(.*)$/\1/g'
24 shell-script  sed  awk  diff 

4
以多种表达方式进行就地辩论
我正在尝试通过使用替换文件中的多个单词 sed -i #expression1 #expression2 文件 Something 123 item1 Something 456 item2 Something 768 item3 Something 353 item4 输出(所需) anything 123 stuff1 anything 456 stuff2 anything 768 stuff3 anything 353 stuff4 试用 我可以使用sed -i2次获得以下输出。 sed -i 's/Some/any/g' file sed -i 's/item/stuff/g' file 我可以用任何可能的方式使它成为单个就地命令吗? sed -i 's/Some/any/g' -i 's/item/stuff/g' file 当我尝试上述代码时,它将s/item/stuff/g作为文件并尝试对其进行处理。



5
如何报告“ sed”就地变更
在sed用于就地替换字符串时,是否有办法使其报告所做的更改(不依赖于新旧文件的差异)? 例如,如何更改命令行 find . -type f | xargs sed -i 's/abc/def/g' 这样我就可以看到正在进行的更改?

7
两个标签之间的文字
我想<tr> </tr>从html文档中检索这两个标签之间的任何内容。现在,我没有任何特定的html要求可以保证html解析器。我只是简单地需要一些匹配的东西,<tr>并</tr>在两者之间获取所有内容,并且可能会有多个trs。我尝试了awk,它可以工作,但是由于某种原因,它最终给了我提取的每一行的副本。 awk ' /<TR/{p=1; s=$0} p && /<\/TR>/{print $0 FS s; s=""; p=0} p' htmlfile> newfile 怎么办呢?

7
仅在逗号分隔文件中删除引号之间的逗号
我有一个用逗号(,)分隔的输入文件。有一些用双引号引起来的字段,其中用逗号分隔。这是示例行 123,"ABC, DEV 23",345,534.202,NAME 我需要删除所有在双引号和双引号内出现的逗号。所以上面的行应该解析成如下图所示 123,ABC DEV 23,345,534.202,NAME 我尝试使用以下方法sed,但未给出预期的结果。 sed -e 's/\(".*\),\(".*\)/\1 \2/g' 任何快速的运用了sed,awk或者任何其他Unix工具吗?
23 text-processing  sed  awk  csv 

3
使用sed将字符串替换为文件内容
我有两个不同的文件: 文件1 /home/user1/ /home/user2/bin /home/user1/a/b/c 文件2 <TEXT1> <TEXT2> 我想替换<TEXT1>的文件2与内容文件1使用sed。我尝试了此命令,但没有得到正确的输出: cat File2|sed "s/<TEXT1>/$(cat File1|sed 's/\//\\\//g'|sed 's/$/\\n/g'|tr -d "\n")/g" 您也可以使用其他工具来解决此问题。
23 sed  replace 

8
使用sed将换行符转换为空格
假设我有一个shell变量$string,其中包含一些带有多个换行符的文本,例如: string="this is a test" 我想将此字符串转换为新的字符串new_string,其中所有换行符都转换为空格: new_string="this is a test" 我试过了: print $string | sed 's/\n/ /g' 但这没用 我也想知道是否有一种使用 perl -0777 's/\n/ /g'或命令的方式tr?
22 shell  sed 

4
sed-用文件内容替换字符串
我有两个文件:file1和file2。 file1 具有以下内容: --- host: "localhost" port: 3000 reporter_type: "zookeeper" zk_hosts: - "localhost:2181" file2包含IP地址(1.1.1.1) 我想做的是替换localhost为1.1.1.1,这样最终结果是: --- host: "1.1.1.1" port: 3000 reporter_type: "zookeeper" zk_hosts: - "1.1.1.1:2181" 我试过了: sed -i -e "/localhost/r file2" -e "/localhost/d" file1 sed '/localhost/r file2' file1 |sed '/localhost/d' sed -e '/localhost/r file2' -e "s///" file1 但是我要么更换了整条线,要么将IP移到了我需要修改的那条线之后。

7
与SED正则表达式的非贪婪匹配(模拟perl的。*?)
我想用sed替换第一次AB和第一次出现AC(含)之间的字符串中的任何内容XXX。 对于例如,我有这样的字符串(该字符串是仅用于测试): ssABteAstACABnnACss 我想要类似以下的输出:ssXXXABnnACss。 我这样做是perl: $ echo 'ssABteAstACABnnACss' | perl -pe 's/AB.*?AC/XXX/' ssXXXABnnACss 但我想用实现它sed。以下内容(使用与Perl兼容的正则表达式)无效: $ echo 'ssABteAstACABnnACss' | sed -re 's/AB.*?AC/XXX/' ssXXXss



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.