我不是很精通命令行,所以希望这不是一个太愚蠢的问题。
如果我运行:
ffmpeg -i videofile.avi
Run Code Online (Sandbox Code Playgroud)
我得到这样的输出:
ffmpeg version git-2013-11-21-6a7980e Copyright (c) 2000-2013 the FFmpeg develop ers
built on Nov 21 2013 12:06:32 with gcc 4.6 (Ubuntu/Linaro 4.6.3-1ubuntu5)
configuration: --prefix=/home/user/ffmpeg_build --extra-cflags=-I/home/user/ffmpeg_build/include --extra-ldflags=-L/home/user/ffmpeg_build/lib --b indir=/home/user/bin --extra-libs=-ldl --enable-gpl --enable-libass --enable -libfdk- aac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-l ibx264 --enable- nonfree
libavutil 52. 53.100 / 52. 53.100
libavcodec 55. 44.100 / 55. 44.100
libavformat 55. 21.100 / 55. 21.100
libavdevice 55. 5.100 / 55. 5.100
libavfilter 3. 91.100 / 3. 91.100
libswscale 2. 5.101 / …
Run Code Online (Sandbox Code Playgroud) 我想在一行文本中找到一个字符串并打印该字符串(在空格之间)和短语的第一个单词。
例如:
“这是一个单一的文本行” “另一件事” “你最好再试一次” “更好的”
字符串列表是:
文本 事物 尝试 更好的
我想要的是获得这样的表:
这个 [tab] 文本 另一个 [tab] 的东西 它 [标签] 试试 更好的
我尝试使用 grep 但什么也没发生。有什么建议吗?
当grep
或sed
与选项一起使用--extended-regexp
并且模式{1,9999}
是所使用的正则表达式的一部分时,这些命令的性能会变低。为了更清楚,下面应用了一些测试。[1] [2]
grep -E
、egrep
和的相对性能sed -E
几乎相等,因此只grep -E
提供了与进行的测试。测试 1
$ time grep -E '[0-9]{1,99}' < /dev/null
real 0m0.002s
Run Code Online (Sandbox Code Playgroud)
测试 2
$ time grep -E '[0-9]{1,9999}' < /dev/null
> real 0m0.494s
Run Code Online (Sandbox Code Playgroud)
测试 3
$ time grep -E '[0123456789]{1,9999}' < /dev/null > 真正的 21m43.947s
测试 4
$ time grep -E '[0123456789]+' < /dev/null
$ time grep -E '[0123456789]*' < /dev/null
$ time grep -E '[0123456789]{1,}' < /dev/null …
Run Code Online (Sandbox Code Playgroud) 我目前正在安装 php7.0,想知道是否有更短的安装模块的方法。通常我输入:
apt-get install php7.0 php7.0-fpm php7.0-mbstring php7.0-mcrypt
php7.0-phpdbg php7.0-dev php7.0-curl php7.0-sqlite3 php7.0-json
php7.0-gd php7.0-cli
Run Code Online (Sandbox Code Playgroud)
是否有正则表达式,这样您就不必一遍又一遍地键入 php7.0?就像是:
apt-get install php7.0-{fpm mbstring mcrypt phpdbg dev curl sqlite3
json gd cli}
Run Code Online (Sandbox Code Playgroud)
我搜索了几个小时,但找不到这样的东西。在此先感谢您的回复。
我正在使用Ubuntu 12.04
。我想安装Regex Search and Replace plugin for Gedit
。所以有人可以告诉我在哪里可以get it and install it
。任何帮助和建议都将非常值得赞赏。
我需要替换文件中的一些字符串(从命令行),但我不想使用,sed -i
因为我的字符串包含许多需要正确转义的有趣字符。有没有办法关闭正则表达式并替换普通字符串?
我有名称如下的文件:
P50_FR_8_q2_scrolls.csv
这里值 50 和 8 需要重命名 & 结果应该是这样的:
P21_FR_3_q2_scrolls.csv
我累了几个类似rename 's/\d{3}(\d{*})\.csv$P21_$1.csv' *.csv
但没有运气。(看来我在 Linux 正则表达式方面真的很糟糕)
值 50->21 和 8->3 是我知道的。但是起始值和终止值并不总是相同的数字大小。
我正在尝试编写一个 grep 命令来在大文本文件中查找如下所示的行:
<div class="node_thumbnail" data-type="file" name="GOPR0036.MP4_frame000001.jpg" data="813334c25191468c9f1c57afc99fde60" aid="133948" rel="/Files/ToolTipView?fileId=813334c25191468c9f1c57afc99fde60&pageNo=1&NoCache=101016083044" rev="topMiddle">
Run Code Online (Sandbox Code Playgroud)
但该+
符号似乎在以下命令中引起了问题:
grep 'data=[a-z,0-9,\"]' file
Run Code Online (Sandbox Code Playgroud)
很多点击
grep 'data=[a-z,0-9,\"]+' file
Run Code Online (Sandbox Code Playgroud)
没有命中
单替换很容易:
string="Mark Shuttleworth"
echo ${string/a/o}
Mork Shuttleworth
Run Code Online (Sandbox Code Playgroud)
有可能同时做双倍吗?
echo ${string/a/o string/t/g} #doesn't work, but you get the idea
Mork Shuggleworgh
Run Code Online (Sandbox Code Playgroud)
正则表达式足以作为答案,如果可以使用它们的话。
谢谢
我写了以下脚本。稍后将在构建过程中使用它。我的目标是决定它是预发布版还是发布版。为了存档,我将 $release 与 RegEx 进行比较。如果我的 RegEx 匹配,则为预发布,否则为发布。
#/bin/bash
release="1.9.2-alpha1"
echo "$release"
if [[ "$release" =~ \d+\.\d+\.\d+[-]+.* ]];then
echo "Pre"
else
echo "Release"
fi
Run Code Online (Sandbox Code Playgroud)
但结果我总是得到以下结果:
~$ bash releasescript.sh
1.9.2-alpha1
Release
Run Code Online (Sandbox Code Playgroud)
版本:
Ubuntu 18.04.1 LTS
Run Code Online (Sandbox Code Playgroud)
我用这个编辑器来测试我的 RegEx。我被困了至少 6 小时,所以我非常感谢一些帮助。