【问题标题】:Deleting lines with sed , unknown command error使用 sed 删除行,未知命令错误
【发布时间】:2015-10-14 05:19:54
【问题描述】:

我正在尝试删除模式匹配中的 4 个后续行。
要匹配的模式是我从其他文件中逐行读取的内容。

我的脚本如下所示:

#! /bin/bash     

while read line; do
    cat database.US_en_test | sed "/$line/ , +4d"  >> output 
done < file_del.txt

但是,我收到如下错误:

sed: -e expression #1, char 20: unknown command: `1'

不知道是什么错误,请帮忙!

【问题讨论】:

  • 添加file_del.txt的内容。
  • 正如@cyrus 所暗示的,file_del.txt 中可能有一行包含/ 字符。向我们展示该文件可能会有所帮助。另外,如果你在循环之前添加set -x,bash 将在执行之前打印带有扩展变量的每一行,这样你就可以准确地看到sed 命令失败时的样子

标签: regex bash shell sed


【解决方案1】:

唯一可能导致地址错误的字符是模式中的额外/

使用 GNU sed,您可以使用另一个字符作为分隔符:选择一个您知道 sed 不会在您的 file_del.txt 中找到的字符,并在您的地址中使用反斜杠作为第一个分隔符的前缀:

sed "\_$line_, +4d"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2021-12-11
    • 1970-01-01
    • 2015-08-02
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2011-05-03
    相关资源
    最近更新 更多