我只是在终端中运行一些命令,我开始想知道,运行管道命令时 Unix/Linux 是否采用快捷方式?
例如,假设我有一个一百万行的文件,其中前 10 行包含hello world
. 如果您运行该命令grep "hello world" file | head
,第一个命令是在找到 10 行后立即停止,还是继续先搜索整个文件?
目前我正在运行这样的命令,以获取请求最多的内容:
grep "17\/Jul\/2011" other_vhosts_access.log | awk '{print $8}' | sort | uniq -c | sort -nr
Run Code Online (Sandbox Code Playgroud)
我现在想查看用户代理字符串,但问题是它们包含几个空格。这是一个典型的日志文件行。UA 是用引号分隔的最后一部分:
example.com:80 [ip] - - [17/Jul/2011:23:59:59 +0100] "GET [url] HTTP/1.1" 200 6449 "[referer]" "Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.122 Safari/534.30"
Run Code Online (Sandbox Code Playgroud)
有没有比 awk 更好的工具呢?
我刚刚.deb
在 Ubuntu 服务器上安装(从提供的文件)的某个软件的服务将无法启动。运行服务时出现错误:
/etc/init.d/matrixsa: 44: Syntax error: "}" unexpected (expecting "fi")
Run Code Online (Sandbox Code Playgroud)
这是脚本的相关部分。不精通 shell 脚本我不知道这是否有效:
if [ -f /etc/rc.d/init.d/functions ]
then
. /etc/rc.d/init.d/functions
else
function action {
echo "$1"
shift
$@
} # <-- this is line 44
function success {
echo -n "Success"
}
function failure {
echo -n "Failed"
}
fi
Run Code Online (Sandbox Code Playgroud) 到目前为止,我已经发现您可以使用 avconv 使用这样的命令(从 1:00-3:00 剪切)从视频中剪切一个部分:
avconv -ss 00:01:00 -i "input.avi" -t 00:02:00 -c:v libx264 -crf 23 "output.mp4"
Run Code Online (Sandbox Code Playgroud)
但是我如何从视频中剪切两个(或更多)部分并将它们组合成一个视频?比如上面的1:00-3:00,加上8:00-10:00,制作最后4分钟的视频。
我想我可以分开做然后将它们连接起来,但是有没有更简单的方法?
avconv ×1
awk ×1
command-line ×1
efficiency ×1
ffmpeg ×1
logs ×1
pipe ×1
services ×1
shell-script ×1
utilities ×1