相关疑难解决方法(0)

无用的猫吗?

这可能是许多常见问题解答 - 而不是使用:

cat file | command
Run Code Online (Sandbox Code Playgroud)

(这被称为无用的猫),正确的方式应该是:

command < file
Run Code Online (Sandbox Code Playgroud)

在第二,"正确"的方式 - 操作系统不必产生额外的过程.
尽管知道这一点,我继续使用无用的猫有两个原因.

  1. 更美观 - 我喜欢数据仅从左到右均匀移动.而且它更容易更换cat别的东西(gzcat,echo,...),添加第二个文件或插入新的过滤器(pv,mbuffer,grep...).

  2. 我"觉得"在某些情况下可能会更快.更快,因为有2个进程,1st(cat)执行读取而第二个执行任何操作.它们可以并行运行,这意味着有时可以更快地执行.

我的逻辑是否正确(第二个原因)?

shell command-line cat

90
推荐指数
8
解决办法
2万
查看次数

linux控制台中的模糊文件搜索

有没有人知道从linux控制台执行快速模糊搜索的方法?

当我需要在项目中找到文件但我不记得确切的文件名时,我常常遇到这种情况.在Sublime文本编辑器中,我将按Ctrl-P并键入名称的一部分,这将生成可供选择的文件列表.这是一个让我很满意的惊人功能.问题是在大多数情况下我必须通过ssh浏览远程机器上的控制台中的代码.所以我想知道是否有一个类似于Linux控制台的"Go Anywhere"功能的工具?

linux bash file-search

41
推荐指数
5
解决办法
1万
查看次数

模糊正则表达式

我正在寻找一种使用正则表达式进行模糊匹配的方法.我想使用Perl,但是如果有人可以推荐任何方式来做这个会有所帮助.

作为一个例子,我想匹配一个字母"纽约",前面加一个2位数.之所以遇到困难是因为文本是来自PDF的OCR,所以我想进行模糊匹配.我想要匹配:

12 New York
24 Hew York
33 New Yobk
Run Code Online (Sandbox Code Playgroud)

和其他"近距离"比赛(在Levenshtein距离意义上),但不是:

aa New York
11 Detroit
Run Code Online (Sandbox Code Playgroud)

显然,我需要指定匹配的允许距离("模糊").

据我了解,我不能使用String::ApproxPerl模块来执行此操作,因为我需要在匹配中包含正则表达式(以匹配前面的数字).

另外,我应该注意到这是我真正想要匹配的一个非常简单的例子,所以我不是在寻找一种蛮力的方法.

编辑添加:

好的,我的第一个例子太简单了.我并不是说人们会挂在前面的数字上 - 抱歉这个坏例子.这是一个更好的例子.考虑这个字符串:

ASSIGNOR, BY MESHS ASSIGN1IBNTS, TO ALUSCHALME&S MANOTAC/rURINGCOMPANY, A COBPOBATlOH OF DELAY/ABE.

这实际上是说:

ASSIGNOR, BY MESNE ASSIGNMENTS, TO ALLIS-CHALMERS MANUFACTURING COMPANY, A CORPORATION OF DELAWARE

我需要做的是提取短语"ALUSCHALME&S MANOTAC/rURINGCOMPANY"和"DELAY/ABE".(我意识到这可能看起来像疯了.但我是一个乐观主义者.)一般来说,模式看起来像这样:

/Assignor(, by mesne assignments,)? to (company name), a corporation of (state)/i

匹配是模糊的.

regex perl fuzzy-comparison

28
推荐指数
1
解决办法
8801
查看次数

awk unix - 匹配正则表达式 - 正则表达式字符串大小限制 | 想法?

以下代码用作最小示例。它在文本中搜索一个不匹配的正则表达式(后来是一个大的 DNA 文件)。

awk 'BEGIN{print match("CTGGGTCATTAAATCGTTAGC...", /.ATC|A.TC|AA.C|AAT./)}'

Run Code Online (Sandbox Code Playgroud)

后来我对找到正则表达式的位置感兴趣。因此 awk 命令更复杂。就像这里解决了一样

如果我想搜索更多的不匹配和更长的字符串,我会想出很长的正则表达式:

example: "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" with 3 mismatches "." allowed:
/
...AAAAAAAAAAAAAAAAAAAAAAAAAAA|
..A.AAAAAAAAAAAAAAAAAAAAAAAAAA|
..AA.AAAAAAAAAAAAAAAAAAAAAAAAA|
-
- and so on. (actually 4060 possibilities)

/
Run Code Online (Sandbox Code Playgroud)

我的解决方案的问题是:

  • awk 不会接受很长的正则表达式!(限制似乎在大约 80.000 个字符)
  • 错误:“bash:/usr/bin/awk:参数列表太长”
  • 可能的解决方案:SO-Link但我没有找到解决方案...

我的问题是:

  • 我还能以某种方式使用长正则表达式吗?
    • 拆分字符串并多次运行命令可能是一个解决方案,但是我会得到重复的结果。
  • 有没有另一种方法来解决这个问题?
    • (“agrep”会起作用,但不能找到位置)

regex awk

7
推荐指数
1
解决办法
176
查看次数

标签 统计

regex ×2

awk ×1

bash ×1

cat ×1

command-line ×1

file-search ×1

fuzzy-comparison ×1

linux ×1

perl ×1

shell ×1