我想使用sed从其他空白行中删除标签。例如,仅包含的行\t\n
应更改为\n
. 这个的语法是什么?
问问题
44042 次
6 回答
25
sed
不知道转义序列,如\t
. 因此,您必须tab
在控制台上逐字输入 a:
sed 's/^ *$//g' <filename>
如果您使用 bash,则无法tab
在控制台上键入。您将不得不做^V
,然后按tab
。(Ctrl-V
然后tab
) 打印一个文字标签。
于 2011-09-26T17:09:42.287 回答
2
要用空行替换任意空白行,请使用
sed -r 's/^\s+$//'
-r 标志表示使用扩展的正则表达式,并且 ^\s+$ 模式匹配所有带有一些空格但没有其他字符的行。
于 2011-09-26T17:19:29.117 回答
1
当该行中有 1 个(并且只有 1 个)选项卡时,另一个发布的解决方案将起作用。请注意,Raze2dust 指出 sed 要求您键入文字选项卡。另一种选择是:
sed '/[^ ]/!s/ //g' file-name.txt
从只有制表符的行中替换制表符。倒置类匹配包含任何错误选项卡的行 - 以下'!' 导致它与那些行不匹配 - 仅表示只有制表符的行。然后替换仅在这些行上运行,删除所有选项卡。
于 2011-09-26T17:17:03.740 回答
0
我注意到 \t 不被 UNIX 识别。话虽如此,请使用实际密钥。在下面的代码中,TAB 代表按 Tab 键。
$ sed 's/TAB//g' 旧文件 > 新文件
友情提示:为确保您尝试删除标签的文件中有标签,请使用以下代码查看是否出现 \t
$ od -c 文件名
于 2014-04-20T22:53:51.293 回答
0
对我有用的是:
sed -r '/^\s+$/d' my_file.txt > output.txt
于 2021-12-07T15:02:25.833 回答
-2
grep -o ".*" file > a; mv a file;
于 2013-12-28T12:23:59.947 回答