我所需要的只是删除文本文件中偶数行的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 file
回file
不会达到预期的效果。事实上,它会file
完全截断,也就是说,它会完全擦除 file
。
所以不做这个:
cat file | sed '/[REGEX]/d' > file
答案3
这是awk解决方案:
删除奇数行:
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
该命令用于删除文件中的偶数行。