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