Bullet Proof Text

时间:2015-08-17 03:50:40

标签: regex linux bash awk sed

我不知道发生了什么,但grep,awk,sed在面对一系列文本文件时已被阉割。简单地说,他们将无法工作。我无法通过经过验证的个人和公共示例在awk范围内进行模式匹配。我不能得到sed使用p或i选项,但s仍然有效。无论模式是否匹配,awk和sed都具有简单打印所有内容的奇怪行为。 grep会找到一个单词(通过正则表达式或字符串),但如果我去排除单词(-v),它会删除所有内容。我的意思是一切。

我不认为粘贴代码会有用,但我对此很顺从。我不认为粘贴文本也可以。

是否有一些超级秘密设置会使这些程序愚蠢?我确保所有内容都保存在utf-8中,并运行了tr -d' \ r \ n'和它对一切的排列。这是一个linux盒子,我正在敲打桌子。

所有这些都是在BASH的Linux环境中完成的。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

@GordonDavisson好像已经钉了它。您的tr -d '\r\n'将您的文件转换为一条没有结尾换行符的长行,因此您应该期望grep -v <something that appears in the file>不输出任何内容[最好],因为所有内容都在一行上,而有些人会尽力使用它,甚至不应该期望UNIX工具能够处理它,因为它不是没有结束换行符的有效文本文件。看:

$ cat file
the
quick
brown
dog
$ grep bro file
brown
$ grep -v bro file
the
quick
dog

$ tr -d '\r\n' < file > file2

$ cat file2
thequickbrowndog$
$ grep bro file2
thequickbrowndog
$ grep -v bro file2
$

不确定您希望使用tr实现的目标,因此不确定建议您立即使用该文件。