Sed 删除匹配行,匹配的字符用Shell变量替换,且变量里含有斜杠“/”时,无法删除
“修改语法,用#代替”,这个只能用在sed的s替换命令中,如:s/A/B/可以写为s#A#B#
但直接正则匹配 /正则/ 是不可以这样用#替代的。
这里提供两个方法供参考:
1)先用s命令将此要删除的路径替换为一个文件中不可能出现的唯一字符串,然后再通过正则匹配该字符串删除该行。可以写在一条sed语句中。
name=/usr/local/bin/sed -i 's#'$name'#EXCLUSIVE#;/EXCLUSIVE/d' hello2) grep也支持正则,可以使用grep -v反向过滤。
name=/usr/local/bin/grep -v "$name" hello >outputmv output hello
shell中怎么删除文件中指定行的
1、删除包含指定关键字的行:
sed -i '/hello/d' test_temp
[root@host]$ cat test_temp
world
123
4566
889
2、删除指定行号的行
sed -i '2d' test_temp
[root@host]$ cat test_temp
world
4566
889
3、sed -i '1d' a.txt删首行
4、sed -i '$d' b.txt删尾行
5、sed -i 's/[ ]*//g' c.txt删空格
6、sed -i '/^$/d' d.txt删空行
7、sed -i ‘/love/d’ a.txt删包含string的行。
扩展资料:
shell 命令
常用命令:
cat 文件名 输出文件内容到基本输出(屏幕 or 加>fileName 到另一个文件)
cb 格式化源代码
chmod //change mode,改变文件的权限
cp copy
date 当前的时间和日期
echo $abc 在变量赋值之后,只需在变量前面加一个$去引用.
lint 语法检查程序
ls dir
man help
more type
du 查看磁盘空间状况
ps 查看当前进程状况
who 你的用户名和终端类型
定义变量 name=abc? (bash/pdksh) || set name = abc (tcsh)
mkdir 创建目录
rmdir 删除目录
cd 进入目录
rm 删除文件
more 显示文件
echo 显示指定文本
mv 改文件名 /移动文件
pwd 显示目录路径命令
参考资料来源:百度百科-shell