sed

sed行首或者行末添加字符串

我只是一个虾纸丫 提交于 2020-03-30 19:32:00
昨天写一个脚本花了一天的2/3的时间,而且大部分时间都耗在了sed命令上,今天不总结一下都对不起昨天流逝的时间啊~~~ 用sed命令在行首或行尾添加字符的命令有以下几种: 假设处理的文本为test.file 在每行的头添加字符,比如"HEAD",命令如下: sed 's/^/HEAD&/g' test.file 在每行的行尾添加字符,比如“TAIL”,命令如下: sed 's/$/&TAIL/g' test.file 运行结果如下图: 几点说明: 1."^"代表行首,"$"代表行尾 2.'s/$/&TAIL/g'中的字符g代表每行出现的字符全部替换,如果想在特定字符处添加,g就有用了,否则只会替换每行第一个,而不继续往后找了 例: 3.如果想导出文件,在命令末尾加"> outfile_name";如果想在原文件上更改,添加选项"-i",如(这里的-i,可以理解为其他命令执行后的结果重定向到原文件,所以-n p等参数会影响-i的效果) 4.也可以把两条命令和在一起,在test.file的每一行的行头和行尾分别添加字符"HEAD"、“TAIL”,命令:sed '/./{s/^/HEAD&/;s/$/&TAIL/}' test.file 以上其实都还OK,昨天花太多时间,主要因为被处理的文件是用Mysql从数据库提取的结果导出来的,别人给我之后我就直接处理,太脑残了=

mac brew install redis 报错

女生的网名这么多〃 提交于 2020-03-30 05:54:37
mac brew install redis 报错 /usr/local/opt/php55/bin/phpize /usr/local/opt/php55/bin/phpize: line 61: /usr/local/Library/ENV/4.3/sed: No such file or directory /usr/local/opt/php55/bin/phpize: line 62: /usr/local/Library/ENV/4.3/sed: No such file or directory /usr/local/opt/php55/bin/phpize: line 63: /usr/local/Library/ENV/4.3/sed: No such file or directory Configuring for: PHP Api Version: Zend Module Api No: Zend Extension Api No: /usr/local/opt/php55/bin/phpize: line 155: /usr/local/Library/ENV/4.3/sed: No such file or directory autoheader: error: AC_CONFIG_HEADERS not found in configure.in

开发人员行走Unix的随身四艺

寵の児 提交于 2020-03-29 17:28:14
Unix系统永远只会越来越多,开发人员就没必要特意学习它们的安装、配置和管理了,就全部交给集成人员吧。 但开发人员行走于Unix之间,依然有四样东西要熟练。 一、VI 虽然Unix上的文本编辑器已经越来越好用,但不在Console前面,网速也不够连XWindows的时候,还是要依赖VI。 回想VI的时代背景,发现VI对开发人员已经周到得离谱了,热键多到你双手不离键盘就能完成大半编辑工作。 建议自己制作一张自己认为有用,但又经常忘记的命令的sheet,拿出考试的力气把它背熟。 二、文本处理 开发人员在Unix下干得最多的除了Make和除Bug外,大概就是处理日志文件、业务文件进行查错和统计了。 只会more和grep是不够的,开发老手会把awk,sed,grep,sort,unique,wc这些文本处理命令,通过管道玩具式的拆卸拼装,最后完成一件原本以为非编写大段代码不可的工作。周到的参数设定,让人再一次感叹那个简单的年代,复杂到极致的设计.......怪不得《Unix 编程艺术》的作者有那么骄傲的自觉。 比如车东的每月访问TOP10 统计脚本: awk -F ' t' '{ print $ 4 }' 2004_2 . txt| grep chedong . com / tech / | sort |uniq -c| sort -rn|head - 10 awk -F '/t'

Linux文本处理工具简单使用-2

耗尽温柔 提交于 2020-03-29 11:36:04
1 查找/etc目录下大于1M且类型为普通文件的所有文件; 通过find命令加适当的参数实现: -size +1M 大于1M; -type f 普通文件; find /etc -size +1M -type f; find /etc -size +1M -type f | xargs ls -lh 2 打包/etc/目录下面所有conf结尾的文件,压缩包名称为当天的时间,并拷贝到/usr/local/src目录备份 通过tar添加适当的参数实现; data +%F 显示当天日期; tar -cf /usr/local/src/`data +%F`.tar /etc/*conf; 3 利用sed 取出ifconfig命令中本机的IPv4地址 sed命令是流编辑,对行进行逐一处理; sed -r 支持正则; sed -n 静默模式,不打印不处理的内容; [^[:digit:]]+ 非数字字符多个; ^[^[:digit:]]+ 行首非数字字符多个; [0-9.]{7,15} 数字和点匹配7到15个字符; 4 删除/etc/fstab文件中所有以#开头,后面至少跟一个空白字符的行的行首的#和空白字符 通过sed命令进行匹配和替换; ^#[[:space:]]+ 以#号开头,后面至少一个空格; sed -rn 's@^#[[:space:]]+(.*)@\1@p' /etc/fstab 5

how to sed for certain parts of a string by delimiter [closed]

江枫思渺然 提交于 2020-03-28 06:39:12
问题 Closed . This question needs to be more focused. It is not currently accepting answers. Want to improve this question? Update the question so it focuses on one problem only by editing this post. Closed 20 days ago . I have lots of different strings that look like redhat-ubi-ubi7-7.8 I want to use the string to make variables so that I end up having something like vendor=redhat product=ubi image=ubi7 tag=7.8 How can I do this? 回答1: With bash and a here string : string='redhat-ubi-ubi7-7.8' IFS

sed初识

空扰寡人 提交于 2020-03-27 08:12:37
例子1: 输入:echo "123 abc" | sed 's/[0-9]*/& & &/' 输出:123 123 123 abc 解释:s代表替换命令,/[0-9]*/用正则表达式找出字符串中匹配的字串,/& & &/为前面匹配字串替换后的模式,&代表所匹配的字串 config文本的内容: 123 abc aedfdf 1 例子2 2 3 输入:sed -e 's/[0-9][0-9]*/& &/' config 4 5 输出: 6 7 123 123 abc 8 aedfdf 1 例子3 2 3 输入:sed -n -e 's/[0-9][0-9]*/& &/p' config 4 5 输出:123 123 abc 1 例子4 2 3 输入:sed -n -e '/[0-9][0-9]*/!p' config 4 5 输出:aedfdf 解释:通过例子2和3可知,加上-n和p后,能只输出匹配了的字串;通过例子2和4可知,-n和!p参数可以得到不匹配的字串 来源: https://www.cnblogs.com/lijimmy/p/7643491.html

Mac下用sed报错 command c expects followed by text

梦想的初衷 提交于 2020-03-27 07:16:24
一条很简单的替换文本的命令: 1 sed -i 's/www.a.cn/www.b.com/g' common.sh 执行时报错command c expects \ followed by text 也有可能报错 invalid command code W 但是同样的命令在服务器上是可以正确执行的,看了mac下的man sed,里面-i选项中的解释: -i extension Edit files in-place, saving backups with the specified extension. If a zero-length extension is given, no backup will be saved. It is not recommended to give a zero-length extension when in-place editing files, as you risk corruption or par- tial content in situations where disk space is exhausted, etc. 大概的意思就是说用-i的选项时mac会进行强制备份,所以你必须给出一个后缀名进行备份,如果你不想进行备份,直接用空字符即可 1 sed -i 's/www.a.cn/www.b.com/g' common

Linux sed进阶

帅比萌擦擦* 提交于 2020-03-26 09:18:15
一、多行命令 在使用sed编辑器的基本命令时,所有的sed编辑器命令都是对单行数据执行操作。sed编辑器也可以对多行数据进行处理,包含了3个可用来处理多行文本的特殊命令。 1》N:将数据流中的下一行加进来创建一个多行组来处理。 2》D:删除多行组中的一行。 3》P:打印钓竿组中的一行。 1.单选的next命令 小写n命令会告诉sed编辑器移动到数据流下一文本行,而不用重新回到命令的最开始再执行一遍。通常sed编辑器会在移动到数据流中的下一文本行前,在这行上执行所有定义好的命令。 $ cat data4 This is the header line This is data line This is the last line $ sed '/header/{n;d}' data4 This is the header line This is data line This is the last line 2.合并文本行 单行next命令会将数据流中的下一文本行移动到sed编辑器的工作空间(称为模式空间)。多行版本的next命令(用大写N)会将下一文本行加到已经在模式空间中的文本上。 这样的作用是将数据流中的两个文本行合并到同一个模式空间。文本行仍然用换行符分隔,但sed编辑器现在会将两行文本当成一行来处理。 $ cat data2 line1 line2 line3 line4

sed进阶教程

删除回忆录丶 提交于 2020-03-26 09:17:37
寻址规则 常规寻址 如果没有指定地址,那么命令将应用于每一行。 如果只有一个地址,那么命令应用于与这个地址匹配的任意行。 如果指定了由逗号分隔的两个地址,那么命令应用于匹配第一个地址(不包括第一个地址)到匹配第二个地址的行(包括此行)。 如果地址后面跟有感叹号(!),那么命令就应用于不匹配该地址的所有的行。 举例 ed中使用寻址 扩大 受命令影响的行数;sed使用寻址 限制 受命令影响的行数。 测试文本:list John Daggett, 341 King Road, Plymouth MA Alice Ford, 22 East Broadway, Richmond VA Orville Thomas, 11345 Oak Bridge Road, Tulsa OK Terry Kalkas, 402 Lans Road, Beaver Falls PA Eric Adams, 20 Post Road, Sudbury MA Hubert Sims, 328A Brook Road, Roanoke VA Amy Wilde, 334 Bayshore Pkwy, Mountain View CA Sal Carpenter, 73 6th Street, Boston MA View Code 删除所有行 d 删除首行 1d 删除尾行 $d 删除空行 /^$/d

【sed】进阶

非 Y 不嫁゛ 提交于 2020-03-26 09:16:52
sed的基本用法已能满足大多数需求,但当需要时,知道这些高级特效的存在及如何使用将提供莫大的帮助! 1. 多行命令 sed编辑器提供三个用于处理多行文本的特殊命令: N:将数据流的下一行加入当前模式空间 D:删除多行组中的一行 P:打印多行组中的一行 【next命令】 单行next命令: 小写的n命令,将下一行文本移入模式空间(工作空间)并挤走已有文本,即跳过当前行进入下一行。 1 # cat data1.txt 2 this is the header line 3 4 this is the data line 5 6 this is the last line 经n命令处理后可跳过第一行: 1 # sed '/header/{n;d}' data1.txt 2 this is the header line 3 this is the data line 4 5 this is the last line 多行next命令: 大写的N命令,将下一行文本并入当前模式空间,即加到已有文本之后。两个文本行合并成一行,仍以换行符分隔。 1 # cat data2.txt 2 This is the header line. 3 This is the first data line. 4 This is the second data line. 5 This is the last