我有一些文件如下。我想删除没有4列的行。
263 126.9 263 50.2
264 76.6 264 6.2
265 62.3 265 49.9
266 84.2 266 18.3
7 63.8
8 59.7
9 36.4
11 12.0
期望的输出
263 126.9 263 50.2
264 76.6 264 6.2
265 62.3 265 49.9
266 84.2 266 18.3
答案 0 :(得分:5)
答案 1 :(得分:1)
sed '/\([^[:blank:]]\{1,\}[[:blank:]]\{1,\}\)\{3\}[^[:blank:]]\{1,\}/ !d'
在此示例中,使用
进行优化sed '/\([0-9.]\{1,\}[[:blank:]]\{1,\}\)\{3\}[0-9.]\{1,\}/ !d'
包括仅4列的sudo_O备注(其他允许更多打印)和列数的参数变量(必须至少为2)
ColNbr=4
ColBefore=$(( ${ColNbr} - 1 ))
sed "/^\([^[:blank:]]\{1,\}[[:blank:]]\{1,\}\)\{${ColBefore}\}[^[:blank:]]\{1,\}[[:blank:]]*$/ !d"
正如他所说,sed不是在这种情况下使用的优化工具(阅读参数评论)
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/\S+/&/4;t;d' file