【发布时间】:2014-01-30 14:02:48
【问题描述】:
我有一个包含大约 800 万行的文本文件。我需要删除所有包含单个字符的行。例如
This is
the
text file
I
wrote
我想删除上面有代词“I”的整行。奖励指向可以在 linux 命令行上执行此操作的人。
【问题讨论】:
标签: linux command-line sed awk
我有一个包含大约 800 万行的文本文件。我需要删除所有包含单个字符的行。例如
This is
the
text file
I
wrote
我想删除上面有代词“I”的整行。奖励指向可以在 linux 命令行上执行此操作的人。
【问题讨论】:
标签: linux command-line sed awk
这是一个尝试:
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 用于查找 RE 并打印结果(基于 ed 命令 G/RE/P 命名),sed 用于在单行(流 ED)上替换 RE,awk 用于其他所有文本操作。
你只需要:
grep '..' file
除非你也想保留空行,在这种情况下它会是:
grep -v '^.$' file
【讨论】:
由shell完成
#! /usr/bin/bash
while read line
do
if [[ "${#line}" != 1 ]]; then
echo $line
fi
done < file
【讨论】:
狂欢
while read -r line
do
if [ ${#line} -gt 1 ] ;then
echo $line
fi
done < file
【讨论】:
如果你的系统上有 Ruby
ruby -ne 'puts $_ if $_.chomp.length >1 ' file
【讨论】: