ubuntu/linux下使用sed、echo进行文件操作总结。
一、sed进行数据操作
1、删除file.txt的第一行、最后一行
sed -i ‘1d’ file.txt # 删除第一行
sed -i ‘$d’ file.txt # 删除最后一行
3、删除file.txt的第N行、第M到N行
sed -i ‘Nd’ file.txt # N为具体数字,指第N行,如10
sed -i ‘M,Nd’ file.txt # 删除M到N行
sed -i ‘M,$d’ file.txt # 删除第M行到最后一行的所有行
4、删除file.txt中包含某个关键字开头的所有行
sed ‘/^abc/d’ file.txt # “^abc”表示abc必须出现在行的开头,即删除abc开头的所有行
5、删除file.txt中包含某个关键字的所有行
sed ‘/abc/d’ file.txt # 删除包含abc的所有行(任意位置)
6、替换字符串
sed -i ‘s/abc/ABC/’ file.txt # 替换file.txt每一行的第一个abc为ABC
sed -i ‘s/abc/ABC/g’ file.txt # 使用后缀g,替换file.txt每一行的所有abc为ABC
sed -i ‘s/^/ABC/’ file.txt # 在file.txt每一行的行首追加字符串ABC
sed -i ‘s/$/ABC/’ file.txt # 在file.txt每一行的行尾追加字符串ABC
7、追加行
sed -i ‘Na hello_world’ file.txt # 在file.txt第N行后面追加一行”hello_world”,a表示追加
sed -i ‘Ni hello_world’ file.txt # 在file.txt第N行前面插入一行”hello_world”,i表示插入
sed -i ‘/hello/a hello_world’ file.txt # 在file.txt包含”hello”的所有行后面追加一行”hello_world”
*备注:以上所有命令中 -i 指在原文件上操作,操作后的结果保存到原文件;当然也可以用 – e 关键字输出操作结果到新文件。
# eg.
sed -e ‘1d’ file.txt > new_file.txt # 删除文件file.txt的第一行,将操作后的结果保存到new_file.txt
# 其余命令类似
二、echo进行数据操作
1、显示行
echo “hello world” # 在终端打印”hello world”
2、写入行
echo “hello world” >> file.txt # 在文件file.txt末尾写入行”hello world”
3、覆盖写入
echo “hello world” > file.txt # 文件file.txt中原来内容会被覆盖,只保存”hello world”,无论操作多少次,file.txt只保存最新写入的一行
4、写入包含引号的行(特别注意)
# 比如,写入line = 你好,”老王”,你今天真帅!
# 注意,这里line的内容包含双引号””,属于特殊符号,需要使用转义符号
echo “你好,\”老王\”,你今天真帅!” file.txt
Leave A Comment