标签: pattern-matching

`a[bc]d`(括号)和 `a{b,c}d`(括号)有什么区别?

a[bc]d和 和有a{b,c}d什么区别?为什么人们a{b,c}d在已经有的时候使用a[bc]d

brace-expansion pattern-matching

28
推荐指数
2
解决办法
3262
查看次数

如何grep MATCH彩色输入?

假设我有一个为终端着色的命令的输出。我想匹配包含黄色的任何行。我怎样才能在 grep 中做到这一点,例如:mycommand -itSomtimesPrintsLinesWithYellowColorCodes | grep -e "?????"

注意:这不是关于为 grep 的输出着色或添加任何颜色。这只是关于如何过滤/匹配进入 grep 的输入的颜色。

grep colors pattern-matching

10
推荐指数
1
解决办法
2310
查看次数

为什么使用 -name 和 -regex 都找不到我的目录

我有一个目录~/Documents/machine_learning_coursera/

命令

find . -type d -name '^machine'
Run Code Online (Sandbox Code Playgroud)

没有找到任何东西

我也试过

find . -type d -regextype posix-extended -regex '^machine'
Run Code Online (Sandbox Code Playgroud)

以便匹配字符串的开头而没有。

我也试过-name

find . -type d -regextype posix-extended -regex -name '^machine'
Run Code Online (Sandbox Code Playgroud)

并得到错误:

find: paths must precede expression: `^machine'
Run Code Online (Sandbox Code Playgroud)

我在这里做错了什么?

find pattern-matching

10
推荐指数
3
解决办法
896
查看次数

如何打印开始和结束模式之间的最后一行序列?

这个问题的答案:

如何grep开始和结束模式之间的行?

不关心落在匹配模式之间的多个行序列。因此,例如,sed -n '/startpattern_here/,/endpattern_here/p'将打印位于这些模式出现之间的几个行序列。

但是,假设我只想打印文件中的最后一个这样的序列。我可以用 sed 做到这一点吗?如果没有,我想可能是awk?还有什么?

笔记:

  • 您可以假设这些序列不重叠。
  • 输出中包含起始和结束模式行。
  • 对较低复杂性模式做出假设的答案也是有效的(尽管不是最佳的)。

grep sed awk text-processing pattern-matching

9
推荐指数
5
解决办法
810
查看次数

编写一个函数来检查字符串是否以某些内容开头或包含某些内容

我想编写一个函数来检查给定的变量,例如,var以给定字符串列表中的任何单词开头。这个列表不会改变。

为了实例化,让我们假设我想检查是否varaa,abc或开头3@3

此外,我想检查是否var包含字符>.

假设这个函数被调用check_func。我的预期用途看起来像

if check_func "$var"; then
    do stuff
fi
Run Code Online (Sandbox Code Playgroud)

例如,应该“做的东西”了 aardvarkabcdef3@3com.com12>5


我已经看到这个 SO 问题,其中用户提供了部分工作:

beginswith() { case $2 in "$1"*) true;; *) false;; esac; }
Run Code Online (Sandbox Code Playgroud)

我的想法是我会遍历上面提到的列表并使用这个函数。我的困难在于不完全理解应该如何退出(或任何替代返回)来完成这项工作。

shell string function pattern-matching

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

对单词列表使用 if 语句

所以我有一个程序(比如,programA),它会给我一个输出,例如:yes, no, maybe, probably, possibly, impossible, banana

我想制作一个脚本,它可以根据该输出执行某些操作,无论它是什么。假设我只需要考虑yes,maybebanana

到目前为止,我会做的是case像这样使用:

case $program_output in
  yes) echo "good word: $program_output" ;;
  maybe) echo "good word: $program_output" ;;
  banana) echo "good word: $program_output" ;;
  *) echo "bad word: $program_output" ;;
esac
Run Code Online (Sandbox Code Playgroud)

但最近我在摆弄这个if语句,发现我可以像这样更快地做到这一点:

if [[ "yesmaybebanana" =~ ${program_output} ]]; then
  echo "good word: ${program_output}"; else echo "bad word: ${program_output}";
fi
Run Code Online (Sandbox Code Playgroud)

有什么理由我不应该为此使用该if语句吗?这是一种$program_output不能有空格的情况,并且它是可以输出的有限单词列表。

bash pattern-matching

8
推荐指数
3
解决办法
899
查看次数

如何引用jq gsub中的匹配组?

使用jq,我想通过正则表达式搜索模式,并用标签之类的东西包装匹配的字符串<div>

$ echo "\"This is a valid json file"\" | jq '. | gsub("valid";"how_to_refer_to_matches";"i") -
Run Code Online (Sandbox Code Playgroud)

如何引用第二个参数中的匹配结果gsub
如果匹配项超过 1 个怎么办?

regular-expression jq pcre pattern-matching

8
推荐指数
1
解决办法
5109
查看次数

使用多种模式运行“ls”时避免非零退出代码

假设我有两个可能的路径,我想列出 Linux 计算机上的目录和文件:

/some/path1/
/some/path2/
Run Code Online (Sandbox Code Playgroud)

如果我在 中执行以下操作,如果或至少之一存在,tcsh我会得到退出代码:0path1path2

ls -d /some/{path1,path2}/*
Run Code Online (Sandbox Code Playgroud)

但是,如果我在 中执行完全相同的操作bash,则会收到2退出代码,并显示一条stderr消息报告path1不存在(如果 path1 是不存在的路径)。

在这种情况下我怎样才能表现bash得像这样?如果至少存在一条路径,是否有一个我可以要求它返回的tcsh开关?如果两者都不存在,我确实期望非零代码,这就是返回的内容。ls0tcsh

bash tcsh wildcards brace-expansion pattern-matching

8
推荐指数
1
解决办法
2006
查看次数

从文件中提取对应于第 n:th 模式的子序列

我有以下数据块(多个)

chr1.trna4 (17188416-17188486)  Length: 71 bp
Type: Gly   Anticodon: CCC at 33-35 (17188448-17188450) Score: 78.3
HMM Sc=56.60    Sec struct Sc=21.70
         *    |    *    |    *    |    *    |    *    |    *    |    *    |
Seq: GCATTGGTGGTTCAGTGGTAGAATTCTCGCCTCCCACGCGGGAGaCCCGGGTTCAATTCCCGGCCAATGCA
Str: >>>>>>>..>>>>.......<<<<.>>>>>.......<<<<<....>>>>>.......<<<<<<<<<<<<.
Run Code Online (Sandbox Code Playgroud)

对于每个块,我需要在块的最后一行找到以Str. 在上述情况下,第 8 个模式是.......(7 个周期)。这是因为第一组>符号构成一个模式,第二组周期构成第二个模式,依此类推。

现在我需要从Seq模式行正上方的行中提取这 7 个字符。在示例中,这对应于子序列CTCCCAC

输出应该是 Seq is CTCCCAC and Anticodon: CCC

这在bash或任何外壳中都可能吗?

数据块的更多示例

chr19.trna11 (4724719-4724647)  Length: 73 bp
Type: Val   Anticodon: CAC at 34-36 (4724686-4724684)   Score: …
Run Code Online (Sandbox Code Playgroud)

sed awk shell-script bioinformatics pattern-matching

7
推荐指数
2
解决办法
819
查看次数

“警告:‘[ob]’形式的范围取决于区域设置”是 gawk 4.1.0 中的错误吗?

在编写一些awk代码时,我使用了4.1.0--lint的选项gawk。令我惊讶的是我收到了警告

警告:“[ob]”形式的范围取决于区域设置

但我的代码只有foo-bar字符类的外部。简化示例:

{ match($2, /^uid=([^,]+),dc=foo-bar$/, m) }
Run Code Online (Sandbox Code Playgroud)

另外我认为 gawk 4.2.1 不再输出该警告,那么这是一个错误吗gawk

awk locale pattern-matching

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