小编ble*_*ft2的帖子

Multiline grepping – 这个表达式有什么问题?

考虑这个示例文件(行号仅供参考):

1 Reference duiarneutdigane uditraenturida enudtiar.
2
3 Reference uiae uiaetrtdnsu iatdne uiatrdenu diaren uidtae
4 on line 23.
5
6 uiae
7
8 uaiernd Reference uriadne udtiraeb unledut iaeru uilaedr
9 uiarnde line 234.
Run Code Online (Sandbox Code Playgroud)

我希望使用此 grep 命令(tst 是示例文件)匹配以“Reference”开头并以句点结尾的每个字符串(即 ll.1、3-4 和 8-9):

grep -P '(?s)Reference.*?\.' tst

但是,它只匹配第一行。我在想什么:

  • (?s), 所以.匹配所有字符,包括换行符
  • .*? 应该使星不贪婪,因此如果它以句点结尾,则它不匹配整个文件。
  • 该表达式应以文字句点结束\.

我也试过 awk 和 grep 的-z标志,但是我要么得到每一行,要么不是所有的行都与我的表达相匹配。

grep regular-expression

6
推荐指数
1
解决办法
3477
查看次数

用于移动文件并将其跟踪到目的地的别名

我正在尝试编写一个脚本——或者更准确地说是一个别名——它允许我移动文件并跟随 ( cd) 它们到它们的目标目录。这个问题的公认答案建议使用以下代码:

mvf() { mv "$@" && goto "$_"; }
Run Code Online (Sandbox Code Playgroud)

wheregoto只是一个更安全的变体,cd并且$_是传递给最后一个命令的最后一个参数。

我的派生实现是这样的:

alias mvaf="mv $@ && cd $_"
Run Code Online (Sandbox Code Playgroud)

请注意,我没有引用$@是为了不尝试按所有参数的名称移动文件。我最初确实尝试过这个变体,但脚本也失败了。如果我用 调用上面的实现mvaf test1 test2 ..,它会抛出(翻译):“mv:缺少文件操作数”

在调试时,我尝试不使用cd,实际上alias mvaf="mv $@ ",基本上只是重命名mv,移动文件。

我现在想知道为什么mv在我的第一个实现中缺少操作数,以及这可能是如何由&&.

bash alias quoting

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

标签 统计

alias ×1

bash ×1

grep ×1

quoting ×1

regular-expression ×1