【发布时间】:2016-08-24 10:56:24
【问题描述】:
你好,我有一个行号
i=10
现在我想用 sed 删除那行
sed '$i d' file
但看起来这行不通..
有什么想法吗?
【问题讨论】:
-
sed "$i d" file
你好,我有一个行号
i=10
现在我想用 sed 删除那行
sed '$i d' file
但看起来这行不通..
有什么想法吗?
【问题讨论】:
sed "$i d" file
在 awk 中。第一个测试材料:
$ cat > foo
1
2
3
设置i:
$ i=2
别闹了:
$ awk -v line="$i" 'NR!=line' foo
1
3
【讨论】:
sed 的方法更安全,因为它不受外壳注入的影响。
sed -i.bak "${i}d" data.txt
就是你要找的。p>
备注
-i 选项用于就地编辑。已创建扩展名为 .bak 的备份。【讨论】:
${i}d,否则会尝试扩展不存在的$id。
删除第二行并显示结果:
sed -e '2d' data.txt
所以你的答案是:
sed -e "$i d" file.txt > file.txt
【讨论】:
只需在带引号的变量周围添加强引号:
i=10
sed ''"$i"' d' file
【讨论】: