删除文本文件中的单个字符行

时间:2014-01-11 15:14:32

标签: linux command-line sed awk

我有一个大约有800万行的文本文件。我需要删除其中包含单个字符的所有行。例如

This is 
the 
text file 
I 
wrote

我想删除其上带有代词“I”的整行。奖励指向可以在linux命令行上执行此操作的人。

6 个答案:

答案 0 :(得分:9)

这是一个尝试:

awk 'length>1' file

如果您不想删除空白行(零字符)

awk 'length!=1' file

如果你的行上有空格(你不想算作字符):

awk '{gsub(/[[:space:]]/,"")}length!=1' file

答案 1 :(得分:4)

也可以这样做:

sed '/^.$/d' inputFile

将输出存储在新文件中:

sed '/^.$/d' inputFile > outputFile

或用于文件内编辑:

sed -i '/^.$/d' inputFile

答案 2 :(得分:3)

您只需要:

grep '..' file

除非你想保留空行,否则它将是:

grep -v '^.$' file

答案 3 :(得分:0)

由shell完成

#! /usr/bin/bash

while read line
do
   if [[ "${#line}" != 1 ]]; then
       echo $line
   fi
done < file

答案 4 :(得分:0)

的bash

 while read -r line
 do 
     if [ ${#line} -gt 1 ] ;then    
        echo $line 
     fi
 done < file

答案 5 :(得分:0)

如果您的系统上有Ruby

ruby -ne 'puts $_ if $_.chomp.length >1 ' file