Bash 仅当unix脚本中的单引号不是撇号时才删除它

Bash 仅当unix脚本中的单引号不是撇号时才删除它,bash,unix,Bash,Unix,我想在句子中保留“如果它们被用作我将要使用的,它是等的。但是需要删除“wamp”,“etc” I'll say 'bash is great!' if I could do this 应该成为 I'll say bash is great! if I could do this. $perl-pe“s@(?:\s'|'\s)@@g“尝试转义”字符。通常在大多数语言和系统中,反斜杠\用于转义特殊字符 请尝试以下操作: 我要说的是回声 我会说 >我会说 我会说 >echo我会说“bash”很棒

我想在句子中保留“如果它们被用作我将要使用的,它是等的。但是需要删除“wamp”,“etc”

I'll say 'bash is great!' if I could do this
应该成为

I'll say bash is great! if I could do this.

$perl-pe“s@(?:\s'|'\s)@@g“尝试转义”字符。通常在大多数语言和系统中,反斜杠\用于转义特殊字符

请尝试以下操作:

我要说的是回声 我会说 >我会说 我会说 >echo我会说“bash”很棒 我会说bash很棒 >echo我会说“bash很棒” 我会说bash很棒
使用纯和:

而IFS=read-r行;做
line=“${line/\'/}”
line=“${line/\'/}”
line=“${line/\',/,}”
回音“$line”
完成
什么是规格/条件???看起来太棘手了,我需要bash中的解决方案。这看起来像是一个家庭作业。您尝试了什么?我尝试了一些,但似乎没有任何效果:sed“s/^'/;s/'$/”test2sed不是bash,我给了您一个使用perlYou的解决方案,您可以在bash脚本中使用perl!这种方法最有效,但有一个小问题。我有一个大的文本文件,我需要清理并去掉引号(不是撇号)。如果我有一行以引号开头,它不会被删除。@Shanthi:你应该提到你想处理问题中的一个大文本文件。使用纯bash参数扩展来实现这一点对于小字符串来说是可以的,但它并不真正适合处理大量文本。最好使用sed(或perl或python)。
$ perl -pe "s@(?:\s'|'\s)@ @g" <<< "I'll say 'bash is great' if I could do this"
I'll say bash is great if I could do this
while IFS= read -r line; do
    line="${line//\' / }"
    line="${line// \'/ }"
    line="${line//\',/,}"
    echo "$line"
done < YOUR_BIG_FILE.TXT