文本文件包含奇怪字符的行 - 想要修复
我是一个没有经验的程序员在包含我尝试处理的数据的大文本文件中处理新问题。这里是什么,我看着屏幕捕获(使用“少” - 我是一个Linux服务器上):文本文件包含奇怪字符的行 - 想要修复
https://drive.google.com/file/d/0B4VAqfRxlxGpaW53THBNeGh5N2c/view?usp=sharing
生物信息学家会识别此文件为“的fastq”文件包含DNA序列数据。屏幕截图的上半部分包含预期格式的数据(我承认它包含一些“奇怪”的字符,但这不是问题)。然而,下半部分(有许多字符用白色阴影)完全搞砸了。如果我要向下滚动该文件,它将在大约500行后最终返回到正常文本。我想修复它,因为它正在破坏我正在执行的下游操作(它正好在文件中抱怨这个位置)。
有没有办法来grep和删除阴影线?或者,我可以通过某种方式修改有问题的行上的编码来解决这个问题吗?
感谢
如果幸运的话,你可以使用
strings file > file2
哦,尝试另一种方式。
确定正确行的行长(我认为前两行是不同的)。
head -1 file | wc -c
head -2 file | tail -1 | wc -c
嗯,wc也从两个长度计数行结束,减1。
比尝试一次读取文件1行。使用一个case-statement,这样你就不必再写很多其他东西了 - 如果这个结构是用来比较长度和预期长度的。在代码中,我将接受长度20,100和330 将所有内容重定向到循环外部的另一个文件(内部将覆盖每一行)。
cat file | while read -r line; do
case ${#line} in
20|100|330) echo $line ;;
esac
done > file2
总共不同的方法将被过滤错线,SED,AWK或者grep的但这需要了解什么字你会也不会接受。
是的,当你是幸运的(wo-)男人时,所有丑陋的线条都会有一个共同的字符,如'<'或者'@'。在这种情况下,你可以使用egrep的:
egrep -v "<|@" file > file2
基于检测中的SNAP
sed -r 's/<[[:alnum:]]{2}>//g;s/\^.//g;s/ESC\^*C*//g' file
,使文件中的实际变化,使备份文件使用扩展名.bak的做
sed -r -i.bak 's/<[[:alnum:]]{2}>//g;s/\^.//g;s/ESC\^*C*//g' file
把图片输出的文字形式在你的问题..它会更容易测试和删除,以获得您的预期输出 – repzero 2015-02-11 22:57:37
@Xorg - 我不认为这会奏效。问题(我认为)是阴影字符不是文字,而是控制字符和十六进制代码的终端表示(我相信这也是为什么你的正则表达式没有影响)。当我复制并粘贴到SO时,这些字符只会转换为它们的文字表示形式,所以对测试无用。我需要一些方法来识别这些特殊字符并摆脱它们。我今天用awk取得了一些成功,一旦我按照需要工作,就会发布。 – santayana 2015-02-12 01:46:13