【问题标题】:sed '$i d' // Deleting a line with linenumber in var [duplicate]sed '$i d' // 删除 var 中带有行号的行 [重复]
【发布时间】:2016-08-24 10:56:24
【问题描述】:

你好,我有一个行号

i=10

现在我想用 sed 删除那行

sed '$i d' file 

但看起来这行不通..

有什么想法吗?

【问题讨论】:

标签: bash sed


【解决方案1】:

在 awk 中。第一个测试材料:

$ cat > foo
1
2
3

设置i:

$ i=2

别闹了:

$ awk -v line="$i" 'NR!=line' foo
1
3

【讨论】:

  • 这比基于sed 的方法更安全,因为它不受外壳注入的影响。
【解决方案2】:
sed -i.bak "${i}d" data.txt

就是你要找的。​​p>


备注

  • sed 的-i 选项用于就地编辑。已创建扩展名为 .bak 的备份。
  • 带 sed 的双引号扩展了 shell 变量

【讨论】:

  • 必须是${i}d,否则会尝试扩展不存在的$id
  • @BenjaminW。 : 一如既往的朋友!非常感谢。
【解决方案3】:

删除第二行并显示结果:

sed -e '2d' data.txt

所以你的答案是:

sed -e "$i d" file.txt > file.txt

【讨论】:

    【解决方案4】:

    只需在带引号的变量周围添加强引号:

    i=10
    sed ''"$i"' d' file
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多