我有一个包含大约800万行的文本文件。我需要删除所有只有一个字符的行。例如:
This is
the
text file
I
wrote
我想删除包含代词"I"的整行。谁能够在Linux命令行上完成此操作将得到额外的奖励分数。
我有一个包含大约800万行的文本文件。我需要删除所有只有一个字符的行。例如:
This is
the
text file
I
wrote
这是一个尝试:
awk 'length>1' file
如果您不想删除空行(零个字符的行)
awk 'length!=1' file
如果您在行中有空格(不希望将其视为字符):
awk '{gsub(/[[:space:]]/,"")}length!=1' file
sed也可以做到这一点:
sed '/^.$/d' inputFile
sed '/^.$/d' inputFile > outputFile
sed -i '/^.$/d' inputFile
grep
用于查找正则表达式并打印结果(基于ed
命令G/RE/P命名),sed
用于替换单行上的正则表达式(流编辑器),awk
用于其他所有文本操作。 - Ed Morton你所需要的是:
grep '..' file
除非您也想保留空行,否则应该这样写:
grep -v '^.$' file
使用Shell完成
#! /usr/bin/bash
while read line
do
if [[ "${#line}" != 1 ]]; then
echo $line
fi
done < file
bash
while read -r line
do
if [ ${#line} -gt 1 ] ;then
echo $line
fi
done < file
ruby -ne 'puts $_ if $_.chomp.length >1 ' file