当我使用 (e)grep 在文件中搜索选项卡时,我使用了文字选项卡 ( ^v + <tab>
)。我不能\t
用作正则表达式中选项卡的替代品。使用例如 sed 这个表达式非常有效。
那么是否有可能使用非文字替代品<tab>
以及非工作/未解释的背景是什么\t
?
我需要搜索以某个特定名称开头的文件。可以有多个以特定模式开头的文件,我想列出目录中存在的所有此类文件。
我需要重命名以下内容:
file_001_loremipsum.png
file_002_dolor.png
file_003_sit.png
file_004_amet.png
file_105_randomness.png
Run Code Online (Sandbox Code Playgroud)
进入
upl_loremipsum.png
upl_dolor.png
upl_sit.png
upl_amet.png
upl_randomness.png
Run Code Online (Sandbox Code Playgroud)
如何仅使用一行简单的终端命令来实现它?
昨晚我试图刻录CD。对 k3b 感到恼火并选择使用 brasero,我去删除了 k3b。
我输入:
sudo apt-get remove k3b
Run Code Online (Sandbox Code Playgroud)
我点击了两次 Tab,看到我的系统上有 k3b 和 k3b-data。假设在没有 k3b 的情况下我的系统上不需要 k3b-data,我也想删除它,所以我输入:
sudo apt-get remove k3b*
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有看就按 Y 确认。它卸载了很多k3b
和k3b-data
。它卸载了不适合我的k3b*
正则表达式的软件包。例如:transmission
和network-manager
。
我相当确定我k3b
和和之间没有空格,*
但我不知道为什么它会删除它所做的所有事情。我对 apt-get 有什么误解吗?
我可以使用以下命令创建 YouTube 视频的 mp3:
youtube-dl --extract-audio --audio-format mp3 http://www.youtube.com/watch?v=rtOvBOTyX00
Run Code Online (Sandbox Code Playgroud)
它使用以下文件名创建一个 mp3:
Christina Perri - A Thousand Years [Official Music Video]-rtOvBOTyX00.mp3
Run Code Online (Sandbox Code Playgroud)
我最后不需要视频 ID 部分 ( rtOvBOTyX00
),只想拥有以下内容:
Christina Perri - A Thousand Years [Official Music Video].mp3
Run Code Online (Sandbox Code Playgroud)
这可以通过 youtube-dl 的选项实现吗?如果没有,下一个最佳解决方案是什么?
根据grep --help
和man grep
,我们可以使用该-P
选项将模式解释为 Perl 正则表达式(准确地说是 PCRE),而不是默认的POSIX 基本正则表达式(BRE)。
在 Perl 语言中,可以在表达式中添加各种修饰符,以调整模式解释(在 的语法中/pattern/modifiers
)。
那么,如何为 grep 的 Perl 正则表达式添加修饰符呢?我尝试了一些变体,grep -P "/^got.it$/ms" [FILE]
但搜索结果是错误的。
但是,关于PCRE的解释,手册指出:
这是高度实验性的,grep -P可能会警告未实现的功能。
grep 工具是否可能根本不支持修饰符?
顺便说一句,我注意到可以通过使用-i
选项来执行不区分大小写的模式匹配,这是一个修饰符的例子。
我能否举例说明这三个元素(这些元素是否称为元字符?)有何不同?
我知道这*
意味着全有或全无,但我不确定这是否是正确的思考方式。另一方面.
,?
似乎是一样的。他们匹配一个字符,对吧?
我有一个名为 example 的文件
$ cat example
kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf
Run Code Online (Sandbox Code Playgroud)
当我grep
用来获取之前有空格的行时.pdf
,我似乎无法获取它。
grep *.pdf example
Run Code Online (Sandbox Code Playgroud)
什么都不返回,(我想说,“grep,在之前匹配零个或多个空格.pdf
”,但没有结果)
如果我使用:
grep i*.pdf example
kali.pdf
linux.pdf
ubuntu.pdf
example.pdf.
this.pdf
grep .pdf
Run Code Online (Sandbox Code Playgroud)
所有行都返回,因为我在说“grep,匹配我i
一次或零次,好的。”
最后:
grep " *.pdf" example
Run Code Online (Sandbox Code Playgroud)
没有结果返回
对于这个样本,我想看看
grep .pdf
Run Code Online (Sandbox Code Playgroud)
作为输出
我的想法有什么问题?
我知道正则表达式只能用于字符和字符串,但有时我会在文件名中找到它们。我的问题是:正则表达式仅用于字符还是文件名?
我很高兴grep
该-P
选项支持 Perl 兼容正则表达式。
该工具sed
没有此功能是否有原因?
regex ×10
grep ×3
bash ×2
command-line ×2
rename ×2
apt ×1
batch-rename ×1
directory ×1
files ×1
perl ×1
search ×1
sed ×1
wildcards ×1
youtube ×1
youtube-dl ×1