- 浏览: 311020 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
liuyong19832011:
,赞一个
Java通过BufferedWriter追加内容到文件末尾的几种常用方法 -
justjavac:
总结很好,怎么没人支持呢?最近发现iteye踩贴现象很严重。
shell数组的使用
比如,要将目录/modules下面所有文件中的zhangsan都修改成lisi,这样做:
sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`
解释一下:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
这个命令组合很强大,要注意备份文件。
(1)sed 'y/1234567890/ABCDEFGHIJ/' test_sed
sed 'y/1234567890/ABCDEFGHIJ/' filename
ABCDEFGHIJ
BCDEFGHIJA
CDEFGHIJAB
DEFGHIJABC
注意变换关系是按两个list的位置对应变换
其中:test_sed的内容是:
1234567890
2345678901
3456789012
4567890123
(2)替换每行所有匹配
sed 's/01/Ab/g' test_sed
1234567890
23456789Ab
3456789Ab2
456789Ab23
注意:第一行的0,1没有分别替换为A,b
$ sed '2d' example-----删除example文件的第二行。
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
$ sed '$d' example-----删除example文件的最后一行。
$ sed '/test/'d example-----删除example文件所有包含test的行。
$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。
$ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
$ sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
$ sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。
$ sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。
$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。
$ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。
$ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
$ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。
$ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。
$ sed '/test/i\\
new line
-------------------------' example
如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。
$ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
$ sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。
$ sed '10q' example-----打印完第10行后,退出sed。
$ sed -e '/test/h' -e '$G example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。
$ sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。
sed -i "s/zhangsan/lisi/g" `grep zhangsan -rl /modules`
解释一下:
-i 表示inplace edit,就地修改文件
-r 表示搜索子目录
-l 表示输出匹配的文件名
这个命令组合很强大,要注意备份文件。
(1)sed 'y/1234567890/ABCDEFGHIJ/' test_sed
sed 'y/1234567890/ABCDEFGHIJ/' filename
ABCDEFGHIJ
BCDEFGHIJA
CDEFGHIJAB
DEFGHIJABC
注意变换关系是按两个list的位置对应变换
其中:test_sed的内容是:
1234567890
2345678901
3456789012
4567890123
(2)替换每行所有匹配
sed 's/01/Ab/g' test_sed
1234567890
23456789Ab
3456789Ab2
456789Ab23
注意:第一行的0,1没有分别替换为A,b
$ sed '2d' example-----删除example文件的第二行。
$ sed '2,$d' example-----删除example文件的第二行到末尾所有行。
$ sed '$d' example-----删除example文件的最后一行。
$ sed '/test/'d example-----删除example文件所有包含test的行。
$ sed 's/test/mytest/g' example-----在整行范围内把test替换为mytest。如果没有g标记,则只有每行第一个匹配的test被替换成mytest。
$ sed -n 's/^test/mytest/p' example-----(-n)选项和p标志一起使用表示只打印那些发生替换的行。也就是说,如果某一行开头的test被替换成mytest,就打印它。
$ sed 's/^192.168.0.1/&localhost/' example-----&符号表示替换换字符串中被找到的部份。所有以192.168.0.1开头的行都会被替换成它自已加 localhost,变成192.168.0.1localhost。
$ sed -n 's/\(love\)able/\1rs/p' example-----love被标记为1,所有loveable会被替换成lovers,而且替换的行会被打印出来。
$ sed 's#10#100#g' example-----不论什么字符,紧跟着s命令的都被认为是新的分隔符,所以,“#”在这里是分隔符,代替了默认的“/”分隔符。表示把所有10替换成100。
$ sed -n '/test/,/check/p' example-----所有在模板test和check所确定的范围内的行都被打印。
$ sed -n '5,/^test/p' example-----打印从第五行开始到第一个包含以test开始的行之间的所有行。
$ sed '/test/,/check/s/$/sed test/' example-----对于模板test和west之间的行,每行的末尾用字符串sed test替换。
$ sed -e '1,5d' -e 's/test/check/' example-----(-e)选项允许在同一行里执行多条命令。如例子所示,第一条命令删除1至5行,第二条命令用check替换test。命令的执行顺序对结果有影响。如果两个命令都是替换命令,那么第一个替换命令将影响第二个替换命令的结果。
$ sed --expression='s/test/check/' --expression='/love/d' example-----一个比-e更好的命令是--expression。它能给sed表达式赋值。
$ sed '/test/r file' example-----file里的内容被读进来,显示在与test匹配的行后面,如果匹配多行,则file的内容将显示在所有匹配行的下面。
$ sed -n '/test/w file' example-----在example中所有包含test的行都被写入file里。
$ sed '/^test/a\\--->this is a example' example<-----'this is a example'被追加到以test开头的行后面,sed要求命令a后面有一个反斜杠。
$ sed '/test/i\\
new line
-------------------------' example
如果test被匹配,则把反斜杠后面的文本插入到匹配行的前面。
$ sed '/test/{ n; s/aa/bb/; }' example-----如果test被匹配,则移动到匹配行的下一行,替换这一行的aa,变为bb,并打印该行,然后继续。
$ sed '1,10y/abcde/ABCDE/' example-----把1--10行内所有abcde转变为大写,注意,正则表达式元字符不能使用这个命令。
$ sed '10q' example-----打印完第10行后,退出sed。
$ sed -e '/test/h' -e '$G example-----在sed处理文件的时候,每一行都被保存在一个叫模式空间的临时缓冲区中,除非行被删除或者输出被取消,否则所有被处理的行都将打印在屏幕上。接着模式空间被清空,并存入新的一行等待处理。在这个例子里,匹配test的行被找到后,将存入模式空间,h命令将其复制并存入一个称为保持缓存区的特殊缓冲区内。第二条语句的意思是,当到达最后一行后,G命令取出保持缓冲区的行,然后把它放回模式空间中,且追加到现在已经存在于模式空间中的行的末尾。在这个例子中就是追加到最后一行。简单来说,任何包含test的行都被复制并追加到该文件的末尾。
$ sed -e '/test/h' -e '/check/x' example -----互换模式空间和保持缓冲区的内容。也就是把包含test与check的行互换。
发表评论
-
[转]Linux文件查找命令find,xargs详述
2013-04-25 17:14 1013http://www.cnblogs.com/serendip ... -
Shell编程中Shift的用法[转]
2013-04-25 17:02 993[转]:http://www.cnblogs.com/imag ... -
ANT 执行SHELL脚本
2013-03-20 09:20 5317ANT 执行SHELL脚本 solaris环境 [1]vi ... -
shell数组使用技巧(转载)
2013-03-16 00:25 703转自:http://www.cnblogs.com ... -
eval学习与应用
2013-04-25 17:09 1089eval的作用是再次执行命 ... -
awk使用经验
2013-03-14 16:37 01. 统计列数。 FIELD_NUM=`cat "$ ... -
【转】用shell生成简单格式的xml
2013-02-25 21:53 2134http://blog.csdn.net/dengzhaoqu ... -
shell数组的使用
2012-08-31 10:40 1482B shell #!/bin/bash #set -x ... -
在sed中使用变量 通常,我们使用sed进行变量替换的时候,替换和被替换变量都是hard-coded的。例如: sed -n ‘/comm/p’ /tmp/
2012-07-17 10:44 2533在sed中使用变量 通常,我们使用sed进行变量替换的时候, ... -
shell中的文件分类、合并和切割
2012-06-29 09:45 3319sort用法 s o r t命令选项很长,下面仅介绍各种选项。 ... -
shell合并两个文件(列)
2012-06-29 09:45 11320题目如下: file1. 1 2 2 3 3 4 4 ... -
shell中cut命令的使用方法
2012-06-28 22:23 1869cut命令是用来剪下文本文件里的数据,文本文件可以是字段类型或 ... -
shell合并两个文件
2012-06-28 16:48 1168file1. 1 2 2 3 3 4 4 5 5 6 ... -
read读入分隔符
2012-06-28 08:49 1323$ cat 1.txt 1,a 2 ... -
sort命令
2012-06-12 10:19 1006实用的分类sort操作 ... -
grep正则表达式
2012-06-28 16:48 1124grep the regex.txt grep "t ... -
shell字符串截取
2011-12-14 09:28 1219sed "s/\'/\'\'/g" a.t ... -
shell的while循环
2011-12-14 09:15 1272#!/bin/sh #filename:2.sh b=9 ... -
Shell计算
2011-12-12 14:03 820echo "这是计算:1+2+3+...的函数&qu ... -
Shell变量名使用的特殊字符
2011-09-08 11:28 1658$# 传送给命令Shell的参数序号 ...
相关推荐
总结,通过Python实现的这个简单shell sed替换功能,我们可以看到Python编程语言在文本处理方面的能力,它允许我们在不依赖外部命令行工具的情况下完成文件内容的修改。这种方法对于跨平台的自动化脚本或者需要更多...
第三章介绍了正则表达式的基础(RegularExpressionFundamentals)和一些额外的正则表达式(AdditionalRegularExpressions),以及如何在sed替换中使用它们(SedSubstitutionUsingRegularExpression)。 第四章讨论...
sed 's/old/new/\L/g' file.txt # 将替换后的字符串全部转换为小写 ``` #### 四、正则表达式 ##### 20. 正则表达式基础 正则表达式是用于匹配字符串的强大工具,`sed` 支持多种正则表达式语法。 示例: ``` sed ...
- **sed替换命令语法**:替换命令是最常用的sed功能之一,它允许用户在文件中查找和替换字符串。 - **全局标志g**:标志g(global)表示对找到的每一处匹配都执行替换操作。 - **数字标志和打印标志p**:数字标志...
#### 第二章:Sed替换命令 **6. Sed替换命令语法** Sed提供了一个强大的替换命令`s`,用于替换文本中的字符串。 示例: ``` sed 's/old/new/g' file ``` 这将在文件的所有行中将所有的`old`替换为`new`。 **7. ...
例如,用sed替换文本中的特定字符串: ```bash sed 's/old/new/g' filename ``` 这会将`filename`中所有出现的"old"替换为"new"。`s`是替换命令,`g`是全局替换标志,表示替换每行中所有匹配的实例。 awk(AWK ...
sed替换命令是sed功能中比较复杂的部分,涉及全局标志(g)、数字标志、打印标志(p)、写标志(w)、忽略大小写标志(i)、执行命令标志(e)等。sed的替换命令也支持使用正则表达式。在执行sed部分,手册详细介绍...
- 示例:`cat file | sed 's/abc/def/g' | grep 'def'` 首先使用sed替换所有“abc”为“def”,然后使用grep筛选出包含“def”的行。 ### 总结 sed是一款功能强大的文本处理工具,在Linux脚本编程中有着广泛的...
### Linux sed 批量替换字符串方法详解 #### 一、sed简介 `sed`(stream editor)是一款功能强大的文本处理工具,在Linux系统中被广泛应用于批量处理文本文件,特别是进行字符串查找、替换等操作。本文将详细介绍...
sed的替换功能基本语法是`sed 's/原字符串/新字符串/g' 文件名`,其中`'s'`表示替换操作,`'g'`表示全局替换,即在一行中出现的所有匹配项都会被替换。 例如,将文件中的所有“zhangsan”替换为“lisi”: ```bash ...
接下来,Sed的替换命令将作为重点,包括替换命令的语法、使用全局标志、数字标志、打印标志、写标志、忽略大小写标志、执行命令标志等,以及如何在sed替换中使用正则表达式。 为了提升处理效率,Sed允许在单一...
在Linux系统中,`sed`(流编辑器,Stream Editor)是一个强大的文本处理工具,用于在输入流中进行模式匹配和替换操作。本文将详细介绍如何使用`sed`命令来替换字符串,并探讨其相关的选项和用法。 ### 基本替换语法...
例如,用sed替换配置文件中的敏感信息,用awk处理和分析系统日志,查找性能瓶颈。 9. **学习资源**:《sed与awk》一书提供了深入浅出的讲解和实例,是学习这两个工具的优秀教材。书中涵盖了基础概念、高级技巧以及...
例如,用sed替换所有"hello"为"world",命令如下: ```bash sed 's/hello/world/g' input.txt > output.txt ``` 这会将`input.txt`中的"hello"替换为"world",并将结果输出到`output.txt`。 ### 7. 脚本 Sed脚本...
# 使用sed替换旧值为新值 sed "s/\"\($field_to_change\)\":\"[^\"]*\"/\"\1\":\"$new_value\"/" ``` 这个脚本首先通过awk命令定位到包含指定字段的那一行,然后使用getline获取下一行(通常是包含字段值的那一行...
**Sed替换命令**是其核心功能之一,可以使用正则表达式进行复杂的替换操作。一些常用的替换标志包括: - **全局替换(g)**:`g`标志使得替换全局生效,替换所有匹配项,而不仅仅是第一个。 - **数字标志**:如`1,2,3...
# 使用sed替换文件中的旧注释头 sed -i '' '0,/^#!/s//'"$NEW_HEADER"'/' "$file" fi done ``` 这个脚本会遍历指定目录,找到每个文件,然后用`sed`命令将文件的开头从旧注释头替换为新的注释头。 接下来,我们...
2. **替换操作**:`sedsed 's/old/new/g' file.txt` 将`file.txt`中所有"old"替换为"new"。 3. **条件删除与替换结合**:`sedsed -d '/pattern/; s/another_pattern/replacement/g' file.txt` 删除匹配`pattern`的行...
1. **文本替换**:`sed`最基础的功能就是替换文本,例如,用新的字符串替换旧的字符串,或者根据正则表达式进行更复杂的替换。 2. **行过滤**:`sed`可以按条件打印或删除特定行,这对于处理日志文件或数据分析非常...