我想使用 sed 从其他空行中删除标签。例如,仅包含\t\n
的行应更改为\n
。 这是什么语法?
答案 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;