使用 grep/sed/tr 删除制表符和空行

Remove tabs and blank lines with grep/sed/tr

我有一个如下所示的文本文件:

> cat test.txt

    “Il faut attendre l’expiration du cache.”


    “C'est sûrement un problème lié à l'hébergement.”


    “Tu as du cliquer de travers.”


> cat -e test.txt
$
    �M-^@M-^\Il faut attendre l�M-^@M-^Yexpiration du cache.�M-^@M-^]$
    $
$
    �M-^@M-^\C'est sûrement un problème lié à l'hébergement.�M-^@M-^]$
    $
$
    �M-^@M-^\Tu as du cliquer de travers.�M-^@M-^]$
    $

我希望我的文件看起来像这样:

> cat test.txt
“Il faut attendre l’expiration du cache.”
“C'est sûrement un problème lié à l'hébergement.”
“Tu as du cliquer de travers.”

为了做到这一点,我尝试了 sed -e 's/^\s*//' -e '/^$/d' test.txt 但我得不到我想要的结果。它只删除了一个空行,我仍然没有想出如何删除制表符。

> sed -e 's/^\s*//' -e '/^$/d' test.txt
    “Il faut attendre l’expiration du cache.”

    “C'est sûrement un problème lié à l'hébergement.”

    “Tu as du cliquer de travers.”

如何删除字符串开头的所有空行和制表符?

您可能没有 GNU Sed。使用 GNU Sed,您的 sed 命令应该可以工作。

您可以尝试另一种解决方案:

sed -e 's/^[[:space:]]*//' -e '/^$/d' test.txt

或者,仅删除使用空格和制表符:

sed -e 's/^[ \t]*//' -e '/^$/d' test.txt