如何通过将行号作为变量来删除一行?

时间:2014-04-18 04:20:46

标签: bash shell

我想通过将数字作为变量传递来删除文档的一行,如下所示:

ERR=`set of bash commands` ;  sed '${ERR}d' file

但是单引号中的上述sed命令不起作用。那么如何完成这项任务呢?

1 个答案:

答案 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