sed命令操作文件简单实用
参数:
-i :直接修改读取的文件内容,而不是输出到终端。
a :追加
d :删除
i :插入
s :替换
一般格式:
sed -i '/匹配对应的行/增删改命令 参数' $file_name
'' 中是操作代码块
// 两个斜杠中间是正则匹配。
tips:
1、针对某一行的操作,都可以使用 ‘,’ 进行分割,表示从第x-y 行。
2、在 sed 操作块中使用shell变量,用‘“”’单引号加双引号引用。如,'"$line"'
3、对文件进行的这几个操作,其实都是有规律的。sed -i '/匹配正则/(a/d/i/s) 参数' $file_name。a 的参数就是追加的内容。d不需要参数,会将匹配到的内容删除掉。i的参数是插入的内容。s的参数是/old_string/new_string/ 类似这样的格式。
4、sed -i '/匹配正则/(a/d/i/s) 参数' $file_name。这个表达式中,‘匹配正则’ 的部分,可以用来换成行号。
具体使用
1、sed 命令 替换 条目。
line="hello"
encrypt_line="olleh"
file_name="./test.txt"
#表示1-3行
line_num="1,3"
#把文件中的hello都替换成olleh.
sed -i 's/'"$line"'/'"$encrypt_line"'/' $file_name
#匹配hello所在的行,把hello 换成olleh。建议所有的文件操作都是用这种格式,方便记忆。
sed -i '/'"$line"'/s/'"$line"'/'"$encrypt_line"'/' $file_name
#在1-3行行首添加#,可以用来注释某些行。
sed -i ''"$line_num"'s/^/#/' $file_name
2、使用sed 命令追加条目
line="hello"
encrypt_line="olleh"
file_name="./test.txt"
#表示第3行,也可以使用 1,3 表示第 1-3 行
line_num="3";
#在第 line_num 行之后,添加olleh,建议所有的文件操作都是用这种格式,方便记忆。
sed -i ''"$line_num"'a '"$encrypt_line"'' $file_name
#匹配hel开头的行,在后面追加elloh
sed -i '/hel*/a '"$encrypt_line"'' $file_name
3、使用sed 命令删除条目
line="hello"
encrypt_line="olleh"
file_name="./test.txt"
line_num="3";
#删除 enrypt_line 所在的行。
sed -i '/'"$encrypt_line"'/d' $file_name
#删除 不是encrypt line 所在的行
sed -i '/'"$encrypt_line"'/!d' $file_name
#删除某行
sed -i ''"$line_num"'d' $file_name
4、使用sed 命令进行插入。
line="hello"
encrypt_line="olleh"
file_name="./test.txt"
line_num="3";
#在 encrypt_line 前面插入一行 line
sed -i '/'"$line"'/i '"$encrypt_line"'' $file_name
#在某行之前插入
sed -i ''"$line_num"'i '"$encrypt_line"'' $file_name