删除文本文件中不需要的行

删除文本文件中不需要的行

我所需要的只是删除文本文件中偶数行的sed或代码。awk没什么特别的,我只需要删除文本文件偶数行上的不相关数据。

答案1

简单地:

sed 'n;d' file

对于偶数线,以及

sed '1!n;d' file

对于奇数行。

通过 GNU 实现sed,您还可以使用以下语法:

奇怪的:

sed '1~2d' file

甚至:

sed '2~2d' file

答案2

您可以像这样删除不需要的文本行

sed -i '/[REGEX]/d' <FILE> 

其中[REGEX]是与不需要的文本行相匹配的正则表达式,<FILE>是要从中删除文本的文件的名称。您可以//d像这样嵌套 delete ( ) 命令:

sed '/[REGEX]/d ; /[REGEX]/d ; /[REGEX]/d'

这是一个例子:

echo "a" > file ; echo "abcd" >> file 
sed -i '/^a$/d' file
cat file # => abcd

如果您的版本sed不支持该-i选项,您可以使用以下命令达到相同的效果。

cat file | sed '/[REGEX]/d' > file_2 && cat file_2 > file && rm file_2



给智者的一句话

将 right的输出重定向cat filefile不会达到预期的效果。事实上,它会file完全截断,也就是说,它会完全擦除 file

所以做这个:

cat file | sed '/[REGEX]/d' > file

答案3

这是解决方案:

删除奇数行:

awk 'NR%2==0{ print $0 > "infile" }' infile

删除偶数行:

awk 'NR%2{ print $0 > "infile" }' infile

请注意,上述命令删除了相关行到位来自infile输入文件,因此请小心将输出写入同一输入文件。

您可以将它们写入另一个单独的文件,如下所示:

这将创建EvenLines包含偶数行的文件:

awk 'NR%2==0{ print $0 > "EvenLines" }' infile

这个将创建OddLines包含奇数行的文件:

awk 'NR%2{ print $0 > "OddLines" }' infile

答案4


sed '0~2d' file

该命令用于删除文件中的偶数行。

相关内容