我想通过将数字作为变量传递来删除文档的一行,如下所示:
ERR=`set of bash commands` ; sed '${ERR}d' file
但是单引号中的上述sed命令不起作用。那么如何完成这项任务呢?
答案 0 :(得分:7)
对于像
这样的给定文件$ cat file
1
2
3
4
5
6
7
8
9
10
和包含行号的变量,如
$ ERR=5
sed
:使用双引号允许变量进行插值。请注意使用花括号来允许sed
区分变量和d
标志。在输出行号5不再是打印机。
$ sed "${ERR}d" file
1
2
3
4
6
7
8
9
10
awk
: NR
存储给定文件的行号。使用awk
选项将shell变量传递给-v
,我们创建了一个名为awk
的{{1}}变量。使用no
不等于我们NR
变量的条件,我们告诉awk
打印除了我们不想打印的行号以外的所有内容。
awk