gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 09:03:40 24 4
gpt4 key购买 nike

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

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

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

最佳答案

对于给定的文件,例如

$ 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 存储给定文件的行号。使用 -v 选项将 shell 变量传递给 awk,我们创建了一个名为 noawk 变量。使用 NR 不等于我们的 awk 变量的条件,我们告诉 awk 打印除我们不想打印的行号之外的所有内容.

$ awk -v no="$ERR" 'NR!=no' file
1
2
3
4
6
7
8
9
10

关于bash - 如何通过将行号作为变量传递来删除一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23147313/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com