在 Linux 下如果需要将档案内指定某一行资料删除,可以用 sed 指令达成,以下教学会介绍在 Linux 下用 sed 指令,删除档案内指定的整行资料。
删除指定行数
当知道要删除的资料在档案那一行,或者在某一个行数范围时,可以直接指定删除的行数,例如:
删除档案 filename.txt 的第 10 行:
|
1 |
sed -i '10d' filename.txt |
删除档案 filename.txt 的第 10 至 15 行:
|
1 |
sed -i '10,15d' filename.txt |
将包含有 “delete_str” 字串的一整行资料删除:
|
1 |
sed -i '/delete_str/d' filename.txt |
将包含有 “delete_str” 字串的一整行资料删除:
|
1 |
sed -i '/delete_str/d' filename.txt |
从第 10 行开始,后面的资料全部删除:
|
1 |
sed -i '10,$d' filename.txt |
从包含字串 “delete_str” 的行开始,后面的资料全部删除:
|
1 |
sed -i '/delete_str/,d' filename.txt |
删除档案最后一行:
|
1 |
sed -i '$d' filename.txt |
删除档案内的空白行:
|
1 |
sed -i '/^$/d' filename.txt |
或
|
1 |
sed -i '/./!d' filename.txt |
p.s. sed 支援正规表示式,所有正规表示式放在 “[ ]” 内,另外,如果搜寻内容有特殊字符,例如 “/”, “\”, “[” 及 “]” 等,需要在前面加上 “\”, 例如 “\[” 表示 “[” 字符。
请问 sed -i ‘/delete_str/,d’ filename.txt
这行是否少了个”$”