我想从文本文件中删除所有包含空白字段的行。如何更改以下代码以直接对文件进行更改?
awk '!/^\t|\t\t|\t$/' *.txt
AD 125.9 MN 124.9
AC 38.9 VG 13.2
AV 34.6 BG 33.0
GL 126.2
CY 34.9
CY 44.9
期望的输出
AD 125.9 MN 124.9
AC 38.9 VG 13.2
AV 34.6 BG 33.0
答案 0 :(得分:7)
awk 'NF==4' yourFile
答案 1 :(得分:3)
使用GNU sed
的一种方式:
sed -n -s -i '/[^ \t]* [^ \t]* [^ \t]* [^ \t]/p' *.txt
结果:
AD 125.9 MN 124.9
AC 38.9 VG 13.2
AV 34.6 BG 33.0
答案 2 :(得分:0)
您可以在原始awk命令中使用for循环:
for f in *.txt
do
cp $f /tmp/mytempfile
awk '!/^\t|\t\t|\t$/' /tmp/mytempfile > $f
done
答案 3 :(得分:0)
使用您的输入可能会有效(但这取决于是否有空格或制表符):
sed '/^.\{13\}\s/d' INPUTFILE
或者这个:
awk 'substr($0,14,1) = " " { print }' INPUTFILE
答案 4 :(得分:0)
假设您的文件最多包含4个字段:
awk '{for(i=1;i<5;i++){if($i=="")next;}print}' file_name
测试如下:
> cat temp
AD 125.9 MN 124.9
AC 38.9 VG 13.2
AV 34.6 BG 33.0
GL 126.2
CY 34.9
CY 44.9
>awk '{for(i=1;i<5;i++){if($i=="")next;}print}' temp
AD 125.9 MN 124.9
AC 38.9 VG 13.2
AV 34.6 BG 33.0
>