我以前对文件使用下面的命令,它运行良好,但现在它生成了下面的错误或警告,所需的输出是 82 个名称的列表,但此代码给出了 88 个,我尝试分析输出文件,95% 的名称是所需输出的 a/c,但其余几个不是。 (此代码基本上是在文件 A [包含名称及其 ID] 中找到文件 B [仅包含名称]):
while read -r line; do sed -n "/$line/,/^C/p" fileA| sed '$d';done<fileB>fileC
sed: -e expression #1, char 16: extra characters after command
答案1
您必须转义来自读取行的任何特殊字符。例如,如果 $line 包含任何字符,如 / \ " { } ... 您的 sed 表达式将崩溃。
请参阅此帖子以了解一些逃脱魔法:https://unix.stackexchange.com/a/33005