我有一个两列和n行的文件。 第1列包含names和第2列的age 。 我想根据age (第二列)按升序排列此文件的内容。 结果应显示最年轻的人的name ,然后第二个最年轻的人,等等… 任何build议单线程shell或bash脚本。
例如。 me$ FOO="BAR * BAR" me$ echo $FOO BAR file1 file2 file3 file4 BAR 并使用“\”转义字符: me$ FOO="BAR \* BAR" me$ echo $FOO BAR \* BAR 我显然在做一些愚蠢的事情。 如何获得输出“BAR * BAR”?
下面是一个更大的脚本的shell脚本的片段。 它从由variables持有的string中删除引号。 我正在使用sed,这是否有效? 如果不是那么有效的方法是什么? #!/bin/sh opt="\"html\\test\\\"" temp=`echo $opt | sed 's/.\(.*\)/\1/' | sed 's/\(.*\)./\1/'` echo $temp
我有一个文件f1 : line1 line2 line3 line4 .. .. 我想删除另一个文件f2所有行: line2 line8 .. .. 我用cat和东西做了一些尝试,甚至没有达到我想要的。 我怎样才能做到这一点?
被迫为当前客户端使用CVS,并且远程仓库的地址被更改。 我可以find更改我的本地代码中的远程地址的唯一方法是recursionsearch和replace。 但是,我希望使用sed命令: find ./ -type f -exec sed -i "s/192.168.20.1/new.domain.com/" {} \; 我得到每个文件的错误: sed: 1: ".//file/path …": invalid command code . 我试图摆脱sed比赛/replace期间,但是这并没有解决任何问题。
众所周知,如何将一个过程的标准输出转换成另一个过程的标准input: proc1 | proc2 但是,如果我想将proc1的标准错误发送到proc2并将标准输出保留到当前位置呢? 你会认为bash会有一个命令: proc1 2| proc2 但是,唉,不。 有没有办法做到这一点?
在CYGWIN上,我想要一个BASH脚本来: 创build到远程服务器的SSH隧道。 做一些本地使用隧道的工作。 然后closures隧道。 “关机部分”让我感到困惑。 目前,我有一个蹩脚的解决scheme。 在一个shell中,我运行以下命令创build隧道。 # Create the tunnel – this works! It runs forever, until shell is quit. ssh -nNT -L 50000:localhost:3306 jm@sampledomain.com 然后,在另一个shell窗口,我做我的工作 # Do some MYSQL stuff over local port 50000 (which goes to remote port 3306) 最后,当我完成。 我closures第一个shell窗口来杀死隧道。 我想这样做在一个脚本,如:#创build隧道#做工作#杀死隧道 我如何跟踪隧道进程,所以我知道哪一个杀死?
我只是想从当前目录获取文件,只输出.mp4 .mp3 .exe文件没有别的。 所以我想我可以这样做: ls | grep \.mp4$ | grep \.mp3$ | grep \.exe$ 但是,不,因为第一个grep会输出mp4的,所以其他的grep不会被使用。 有任何想法吗? PS,在Slow Leopard上运行这个脚本。
我在BASH脚本中使用rm来删除许多文件。 有时文件不存在,所以报告很多错误。 我不需要这个消息。 我已经在man页面search了一个让rm安静的命令,但是我发现的唯一的select是-f ,从描述中,“忽略不存在的文件,永远不会提示”似乎是正确的select,但是名字没有似乎适合,所以我担心它可能会有意想不到的后果。 -f选项是否正确地沉默rm ? 为什么不叫它-q ? 这个选项是否还有其他的作用?
我有一个问题,把pwd命令的内容放入一个稍后我将使用的shellvariables中。 这是我的shell代码(循环不停止): #!/bin/bash pwd= `pwd` until [ $pwd = "/" ] do echo $pwd ls && cd .. && ls $pwd= `pwd` done 你能发现我的错误吗?