gpt4 book ai didi

linux - 从 cshell 中的 .txt 文件中删除特定行

转载 作者:太空狗 更新时间:2023-10-29 12:40:42 26 4
gpt4 key购买 nike

我有几个名为 submit.txt 的 .txt 文件,其中有一行

bsub -q l ./dolist.csh

我想从我现在正在做的所有这些文件中删除这一行,但它给了我以下错误:

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

使用的代码是:

#!/bin/bash                                                                                                                                            

for(( x=7; x<=65 ; x+=2))
do
cd arm_$x
sed -i '/bsub -q l ./dolist.csh/d' submit.txt
cd ../
done

请告诉我这里出了什么问题

最佳答案

如果/.../ 命令的模式包含/,它破坏了语法。一种解决方案是使用 \ 转义嵌入的 /:

sed -i '/bsub -q l \.\/dolist\.csh/d' submit.txt

另一种选择是为 /.../ 命令使用不同的定界符。其语法为 \?...? 其中 ? 可以是任何字符(但通常使用 ?),例如:

sed -i '\?bsub -q l \./dolist\.csh?d' submit.txt

当您有多个嵌入的 / 并且将它们全部转义不切实际或者命令将变得难以阅读时,此语法非常有用。

请注意,在这两个示例中,我还转义了所有 . 字符,因为它们在正则表达式中具有特殊含义,可以匹配任何字符,而不仅仅是一个点。如果您不对 . 进行转义,则像 bsub -q l x/dolistycsh 这样的行也会错误地匹配。尽管您可能不希望文件中出现这样的行,准确是好事。

关于linux - 从 cshell 中的 .txt 文件中删除特定行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45115793/

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