如何使用 sed 从空行中删除制表符?

发布于 2024-12-06 17:28:48 字数 119 浏览 0 评论 0原文

我想使用 sed 从空白行中删除制表符。例如,仅包含 \t\n 的行应更改为 \n这个的语法是什么?

I'd like to use sed to remove tabs from otherwise blank lines. For example a line containing only \t\n should change to \n. What's the syntax for this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

梦回梦里 2024-12-13 17:28:48

sed 不知道像 \t 这样的转义序列。因此,您必须在控制台上逐字键入 tab

sed 's/^    *$//g' <filename>

如果您使用的是 bash,则无法在控制台上键入 tab。您必须执行^V,然后按tab。 (Ctrl-V 然后 tab)打印文字选项卡。

sed does not know about escape sequences like \t. So you will have to literally type a tab on your console:

sed 's/^    *$//g' <filename>

If you are on bash, then you can't type tab on the console. You will have to do ^V and then press tab. (Ctrl-V and then tab) to print a literal tab.

美人骨 2024-12-13 17:28:48

当该行中有 1 个(且只有 1 个)选项卡时,另一个发布的解决方案将起作用。请注意,Raze2dust 指出 sed 要求您输入文本制表符。另一种方法是:

sed '/[^      ]/!s/   //g' file-name.txt

将只有制表符的行中的制表符替换掉。反向类匹配包含任何选项卡错误的行 - 下面的“!”导致它与这些行不匹配 - 意味着只有制表符的行。然后,替换仅在这些行上运行,删除所有选项卡。

The other posted solution will work when there is 1 (and only 1) tab in the line. Note that Raze2dust points out that sed requires you to type a literal tab. An alternative is:

sed '/[^      ]/!s/   //g' file-name.txt

Which substitues away tabs from lines that only have tabs. The inverted class matches lines that contain anything bug a tab - the following '!' causes it to not match those lines - meaning only lines that have only tabs. The substitution then only runs on those lines, removing all tabs.

∞梦里开花 2024-12-13 17:28:48

要将任意空白行替换为空行,请使用

sed -r 's/^\s+$//'

-r 标志表示使用扩展正则表达式,并且 ^\s+$ 模式匹配具有一些空白但没有其他字符的所有行。

To replace arbitrary whitespace lines with an empty line, use

sed -r 's/^\s+$//'

The -r flag says to use extended regular expressions, and the ^\s+$ pattern matches all lines with some whitespace but no other characters.

明天过后 2024-12-13 17:28:48

对我有用的是:


sed -r '/^\s+$/d' my_file.txt > output.txt

What worked for me was:


sed -r '/^\s+$/d' my_file.txt > output.txt
此生挚爱伱 2024-12-13 17:28:48

我注意到 UNIX 不识别 \t。话虽如此,请使用实际的密钥。在下面的代码中,TAB代表按下Tab键。

$ sed 's/TAB//g' oldfile > newfile

友好提示:为了确保您尝试删除选项卡的文件中有选项卡,请使用以下代码查看 \t 是否出现

$ od -c filename

I've noticed \t is not recognized by UNIX. Being said, use the actual key. In the code below, TAB represents pressing the tab key.

$ sed 's/TAB//g' oldfile > newfile

Friendly tip: to ensure you have tabs in the file you are trying to remove tabs from use the following code to see if \t appears

$ od -c filename

半步萧音过轻尘 2024-12-13 17:28:48
grep -o ".*" file > a; mv a file;
grep -o ".*" file > a; mv a file;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文