如何使用sed从空白行删除标签?

时间:2011-09-26 17:02:37

标签: tabs sed code-formatting blank-line

我想使用 sed 从其他空行中删除标签。例如,仅包含\t\n的行应更改为\n这是什么语法?

5 个答案:

答案 0 :(得分:24)

sed不知道\t之类的转义序列。因此,您必须在控制台上输入tab

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

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

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

当行中有1个(且仅1个)选项卡时,其他已发布的解决方案将起作用。请注意,Raze2dust指出sed要求您键入文字选项卡。另一种选择是:

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

哪个替代了仅有标签的行的标签。反向类匹配包含任何错误标签的行 - 以下'!'导致它与那些行不匹配 - 仅表示只有选项卡的行。然后替换只在那些行上运行,删除所有选项卡。

答案 3 :(得分:0)

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

$ sed's / TAB // g'oldfile&gt; newfile中

友情提示:要确保您尝试删除标签的文件中有标签,请使用以下代码查看是否显示

$ od -c filename

答案 4 :(得分:-1)

grep -o ".*" file > a; mv a file;