我有一个非常大的文件,需要从其中删除特定的行(行号941573 )
我对这个环境有些陌生,但我一直在谷歌上搜索这个问题,但都无济于事。
我尝试过使用sed命令,但它似乎不起作用
sed -e '941572,941574d' filenameX > newfilenameY我也试过
sed -e '941573d' filenameX > newfilenameY然而,'newfilenameY‘文件和原始文件'filenameX’仍然包含我试图删除的行。这是一个fastq文件,尽管我看不出这有什么不同。就像我说的,我是unix的新手,所以可能我把sed命令弄错了
发布于 2012-10-22 19:15:02
d删除一行或多行。所以你的第二种方法是可行的。
$ sed '941573d' input > output长例:
% for i in $(seq 1000000)
do
echo i >> input
done
% wc -l input
1000000 input
% sed '941573d' input > output
% wc -l output
999999 output
% diff -u input output :(
--- input 2012-10-22 13:22:41.404395295 +0200
+++ output 2012-10-22 13:22:43.400395358 +0200
@@ -941570,7 +941570,6 @@
941570
941571
941572
-941573
941574
941575
941576简短示例:
% cat input
foo
bar
baz
qux
% sed '3d' input > output
% cat output
foo
bar
qux发布于 2012-10-22 19:16:35
下面是如何从文件中删除一行或多行。
语法:
sed '{[/]<n>|<string>|<regex>[/]}d' <fileName>
sed '{[/]<adr1>[,<adr2>][/]d' <fileName>
/.../=delimiters
n = line number
string = string found in in line
regex = regular expression corresponding to the searched pattern
addr = address of a line (number or pattern )
d = delete发布于 2012-10-23 00:06:12
我生成了一个1000000行的测试文件,并测试了您的sed -e '941573d' filenameX > newfilenameY,它在Linux上运行良好。
也许我们还有一些其他的误解。行号从1开始计数,而不是从零开始。如果你从零开始计算,你会发现941572行丢失了。
你试过diff filenameX newfilenameY吗?这将突出显示任何意想不到的变化。
我不太了解FASTQ格式,但是你确定我们谈论的是文本文件的行号,而不是序列号吗?
一般的行长度限制是4096个字节,有没有超过这个限制的行?(这不太可能,但我认为这个问题是值得的)。
https://stackoverflow.com/questions/13010245
复制相似问题