【发布时间】:2013-01-12 06:58:22
【问题描述】:
我需要从输入文件中删除所有空行并写入输出文件。这是我的数据如下。
11216,33,1032747,64310,1,0,0,1.878,0,0,0,1,1,1.087,5,1,1,18-JAN-13,000603221321
11216,33,1033196,31300,1,0,0,1.5391,0,0,0,1,1,1.054,5,1,1,18-JAN-13,059762153003
11216,33,1033246,31300,1,0,0,1.5391,0,0,0,1,1,1.054,5,1,1,18-JAN-13,000603211032
11216,33,1033280,31118,1,0,0,1.5513,0,0,0,1,1,1.115,5,1,1,18-JAN-13,055111034001
11216,33,1033287,31118,1,0,0,1.5513,0,0,0,1,1,1.115,5,1,1,18-JAN-13,000378689701
11216,33,1033358,31118,1,0,0,1.5513,0,0,0,1,1,1.115,5,1,1,18-JAN-13,000093737301
11216,33,1035476,37340,1,0,0,1.7046,0,0,0,1,1,1.123,5,1,1,18-JAN-13,045802041926
11216,33,1035476,37340,1,0,0,1.7046,0,0,0,1,1,1.123,5,1,1,18-JAN-13,045802041954
11216,33,1035476,37340,1,0,0,1.7046,0,0,0,1,1,1.123,5,1,1,18-JAN-13,045802049326
11216,33,1035476,37340,1,0,0,1.7046,0,0,0,1,1,1.123,5,1,1,18-JAN-13,045802049383
11216,33,1036985,15151,1,0,0,1.4436,0,0,0,1,1,1.065,5,1,1,18-JAN-13,000093415580
11216,33,1037003,15151,1,0,0,1.4436,0,0,0,1,1,1.065,5,1,1,18-JAN-13,000781202001
11216,33,1037003,15151,1,0,0,1.4436,0,0,0,1,1,1.065,5,1,1,18-JAN-13,000781261305
11216,33,1037003,15151,1,0,0,1.4436,0,0,0,1,1,1.065,5,1,1,18-JAN-13,000781603955
11216,33,1037003,15151,1,0,0,1.4436,0,0,0,1,1,1.065,5,1,1,18-JAN-13,000781615746
【问题讨论】:
-
这是我的示例数据,以下任何命令都不适合我。 :(
-
他们没有工作因为你问错了问题。你真的试过
sed -i '/^[[:space:]]*$/d' foo吗?因为如果这不起作用,那么您需要重申问题 -
@SOaddict,我在这里看到多个答案可以回答您的原始问题以及处理“空白”行中的空格的问题。如果这些不起作用,我认为您需要检查输入文件并更新问题。
-
我复制粘贴了准确的输入文件示例。
-
下面的命令(应该工作)似乎不起作用的一个可能原因是文件源自 Windows 或通过 Windows 机器传输,实际上有 CRLF(回车,换行)结尾Unix 风格的 NL(换行符,又名 LF)行尾。 Unix 工具将 CR 视为另一个字符,因此像
/^$/这样的正则表达式将无法匹配带有 CRLF 结尾的空行。使用sed -i '/^[[:space:]]*$/d;s/[[:space:]]*$//'的版本也应该适用于 CRLF 行;/^[[:space:]]*$/模式匹配行中的 CR。
标签: unix awk blank-line