Questions tagged «sed»

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

7
如何使用sed -i(就地编辑)实现可移植性?
我正在为服务器编写Shell脚本,该服务器是运行FreeBSD的共享主机。我还希望能够在运行Linux的PC上本地测试它们。因此,我试图以一种可移植的方式编写它们,但是sed我看不到这样做的方法。 我的网站的一部分使用了生成的静态HTML文件,此sed行在每次重新生成后插入正确的DOCTYPE: sed -i '1s/^/<!DOCTYPE html> \n/' ${file_name.html} 它sed在Linux上可以与GNU一起使用,但是FreeBSD sed希望-ioption 后的第一个参数是备份副本的扩展名。它是这样的: sed -i '' '1s/^/<!DOCTYPE html> \n/' ${file_name.html} 但是,GNU sed依次期望表达式在之后-i。(它也需要使用换行符进行修复,但这已在此处得到解答) 当然,我可以将此更改包含在脚本的服务器副本中,但这会很混乱,即我使用VCS进行版本控制。有没有办法以完全可移植的方式使用sed实现此目的?

2
从日期输出中删除前导零
我为date命令设置了别名,以以下格式显示日期: 2013.06.14.12.10.02 使用此命令: alias date = date +"%Y.%m.%d.%H.%M.%S" 一切都很好,除了我想从输出中删除前导零。 无法通过更改格式来实现。我认为只能通过将输出传递给其他命令(例如sed和)来完成awk。 我正在运行的操作系统是Ubuntu 12.04.2 LTS。
40 sed  awk  date 

11
除以'sed'
我正在尝试使用进行数学运算sed,但是它将继续将我的变量视为字符串。输入是这种类型的: $ echo 12 | sed 's/[0-9]*/&+3/' $ 12+3 我想有15个输出。我只需要执行一次操作并替换其数学结果,因为我将程序作为Python守护程序运行,并且我想避免诸如重定向stdout文件,打开这些文件,执行操作,提取结果,执行操作之类的操作。更换。对我来说,sed似乎最好是同时执行所有动作。 我试图以各种方式投射输入和输出 $ echo 12 | sed 's/[0-9]*/int(&+3)/' $ echo 12 | sed 's/[0-9]*/\int(&+3)/' $ echo 12 | sed 's/[0-9]*/\int(&+3)/' 但是结果始终是第二个领域的印刷。
40 sed  math 



2
在一个脚本中加入多个sed命令以处理CSV文件
具有这样的CSV文件: HEADER "first, column"|"second "some random quotes" column"|"third ol' column" FOOTER 并寻找类似的结果: HEADER first, column|second "some random quotes" column|third ol' column 换句话说,删除“ FOOTER”,在引号的开头,结尾和周围加引号。 到目前为止,此代码有效: sed '/FOOTER/d' csv > csv1 | #remove FOOTER sed 's/^\"//' csv1 > csv2 | #remove quote at the beginning sed 's/\"$//' csv2 > csv3 | #remove …
34 sed  csv 

6
sed是否有替代方法支持unicode?
例如: sed 's/\u0091//g' file1 现在,我要做的hexdump是获取十六进制数并输入sed如下: $ echo -ne '\u9991' | hexdump -C 00000000 e9 a6 91 |...| 00000003 然后: $ sed 's/\xe9\xa6\x91//g' file1
33 sed  unicode  hexdump 

3
sed可以将其输出保存到文件吗?
> 可以做到。 echo "text" > file tee 可以做到。 echo "test" | tee file 可以sed不使用上述任何一种方法来做到吗?是否可以在sed不使用>或的情况下将命令的输出保存到文件中tee?

4
删除文件的前n个字节
我遇到了一个极端的问题,我能想到的所有解决方案都很复杂。根据我的UNIX / Linux经验,必须有一种简单的方法。 我想删除中每个文件的前31个字节/foo/。每个文件足够长。好吧,我敢肯定有人会为我提供一个我无法想象的超简单解决方案。也许awk?

3
如何获得sed命令对文件进行永久更改?
这可能吗?我在某处读到以下命令可以做到这一点: sed -e [命令] [文件] 但它似乎和 sed [命令] [文件] (它没有保存更改)。有什么办法可以使用sed做到这一点?
32 sed 

10
如何在模式(标记)之前将文件的内容插入另一个文件?
File1 内容: line1-file1 "1" line2-file1 "2" line3-file1 "3" line4-file1 "4" File2 内容: line1-file2 "25" line2-file2 "24" Pointer-file2 "23" line4-file2 "22" line5-file2 "21" 执行完perl / shell脚本后,File2内容应变为: line1-file2 "25" line2-file2 "24" line1-file1 "1" line2-file1 "2" line3-file1 "3" line4-file1 "4" Pointer-file2 "23" line4-file2 "22" line5-file2 "21" 即,将File1in 的内容粘贴在File2包含“ Pointer”的行之前。

3
sed-如何进行多次连续替换,但只处理一次文件?
如果我要进行多个替换,这些替换需要连续,例如 sed -i '/^[[:space:]]*browser.*\.should/s/browser/expect(browser/' t1_spec.rb sed -i '/expect(browser.*\.should/s/\.should/).should/' t1_spec.rb sed -i 's/\.should/\.to/' t1_spec.rb sed -i 's/==/eq/' t1_spec.rb 有没有更好的方法来做到这一点,它只会通过t1_spec.file一次,并且每行进行4次替换,而不是通过文件4次?
31 sed 



6
如何使用shell命令仅显示文本文件中的第一列和最后一列?
我需要一些帮助来弄清楚如何使用sed命令仅显示文本文件中的第一列和最后一列。到目前为止,这是我对第1列的了解: cat logfile | sed 's/\|/ /'|awk '{print $1}' 我也想使最后一栏也显示: cat logfile | sed 's/\|/ /'|awk '{print $1}{print $8}' 但是,这需要第一列和最后一列,并将它们合并到一个列表中。有没有办法用sed和awk命令清楚地打印第一列和最后一列? 输入样例: foo|dog|cat|mouse|lion|ox|tiger|bar
30 shell  sed  awk 

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.