Articles of bash

使用AWK从两个文件中分解n个列

我有两个N列数的文件 文件1: A 1 2 3 ……. Na1 B 2 3 4 ……. Nb1 文件2: A 2 2 4 ……. Na2 B 1 3 4 ……. Nb2 我想要一个输出从File1的第一列值将被从File2的第一列中减去,这样直到列N如下所示: A -1 0 -1 …….. (Na1-Na2) B 1 0 0 …….. (Nb1-Nb2) 如何在Linux环境中执行AWK或Perl脚本?

如何使用awk将文件的某个字段更改为大写?

我有这样的文本文件: 1 http http 3 4 5 2 dns dns 4 3 ftp ftp 4 5 6 8 我想输出是这样的: 1 HTTP http 3 4 5 2 DNS dns 4 3 FTP ftp 4 5 6 8 我想把第二个字段从小写变成大写,只有第二个字段。 请注意,某一行中的字段数量不固定。 我可以用awk完成这个目标吗?

freeTDS bash:在Microsoft SQL Server中执行sql查询

我可以使用freeTSD和命令行通过Mint Linux VM连接到Microsoft SQL Server 2008实例,以在其上执行sql语句。 现在我想在bash脚本中自动化这个。 我能够成功login我的bash脚本: TDSVER=8.0 tsql -H servername -p 1433 -D dbadmin -U domain\\Administrator -P password 然后我有我的SQL查询: USE dbname GO delete from schema.tableA where ID > 5 GO delete from schema.tableB where ID > 5 GO delete from schema.tableC where ID > 5 GO exit 这在通过freeTSD命令行手动执行时有效,但不能在我放入bash文件时使用。 我跟着这个post: freeTSD&bash 。 这是我的bash脚本示例: echo […]

使用input/输出redirect在后台运行进程

我很想知道,当进程有input/输出redirect来在后台运行进程时,在代码中使用“&”运算符是否有所不同 在后台运行进程方面,这两行代码之间有什么区别? 如果有的话,我怎样才能确定分歧将是什么? setsid python script.py < /dev/zero &> log.txt & setsid python script.py < /dev/zero & > log.txt & setsid python script.py < /dev/zero > log.txt & setsid python script.py & < /dev/zero > log.txt

recursion地“规范化”文件名

我的意思是摆脱特殊字符的文件名等 我已经做了一个脚本,可以recursion重命名文件[http://pastebin.com/raw.php?i=kXeHbDQw]: 例如:之前: THIS is my file (1).txt 运行脚本之后: This-is-my-file-1.txt 好。 这里是: 但是:当我想要“完全”testing它,像这样的文件名: ¤¥¦§¨©ª«¬®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÂÃÄÅÆÇÈÊËÌÎÏÐÑÒÔÕ×ØÙUÛUÝÞßàâãäåæçèêëìîïðñòôõ÷øùûýþÿ.txt áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&'()*+,:;<=>?@[\]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£.txt 它失败[http://pastebin.com/raw.php?i=iu8Pwrnr]: $ sh renamer.sh directorythathasthefiles mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or directory mv: cannot stat `./áíüűúöőóéÁÍÜŰÚÖŐÓÉ!"#$%&\'()*+,:;<=>?@[]^_`{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ''“”•–—˜™š›œžŸ¡¢£': No such file or […]

使用排除列表查找在bash中查找的目录

现在,在你认为“之前已经完成”的情况下,请继续阅读。 和大多数试图findbash脚本的人一样,你最终将脚本硬编码为一行命令,但最终会在接下来的几个月/几年里编辑这个东西,所以你最终希望你做对了第一次。 我正在编写一个小的备份程序来做备份目录,并且需要find它们,而不是需要排除的directorie列表。 说起来容易做起来难。 让我来设置舞台: #!/bin/bash BasePath="/home/adesso/baldar" declare -a Iggy Iggy=( "/cgi-bin" "/tmp" "/test" "/html" "/icons" ) IggySubdomains=$(printf ",%s" "${Iggy[@]}") IggySubdomains=${IggySubdomains:1} echo $IggySubdomains exit 0 现在在这个结尾你得到/ cgi-bin,/ tmp,/ test,/ html,/图标这certificate了这个概念的作用,但现在需要进一步我需要使用find来searchBasePath并search只有一个级别的所有子目录,并排除列表中的子目录… 如果我手工input它将是: find /var/www/* \( -path '*/cgi-bin' -o -path '*/tmp' -o -path '*/test' -o -path '*/html' -o -path '*/icons' \) -prune -type d 我应该也许想循环到每个子目录,并做同样的事情…我希望你明白我的观点。 所以我试图做的似乎是可能的,但我有一个问题, printf“,%s”不喜欢我使用所有这些发现-path或-o选项。 […]

为什么`read -t`不能在RHEL的bash中超时?

为什么read -t在RHEL5或RHEL6上从pipe道读取时没有超时? 这里是我的例子,它不会在我的RHEL盒上超时从pipe道读取: tail -f logfile.log | grep 'something' | read -t 3 variable 如果我正确read -t 3应该在3秒后超时? 提前谢谢了。 克里斯 GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

在unix / linux命令行(例如BASH)中定义函数

有时候,我有一个单独的内容,我为了一个特定的任务重复了很多次,但是可能永远不会以完全相同的forms再次使用。 它包含一个我从目录列表中粘贴的文件名。 之间的某处并创build一个bash脚本我想也许我可以在命令行创build一个单线程函数,如: numresults(){ ls "$1"/RealignerTargetCreator | wc -l } 我已经尝试了一些使用eval的方法,使用了numresults=function… ,但还没有find正确的语法,到目前为止还没有发现任何东西。 (所有的东西都是关于bash函数的教程)。

为什么我的git没有自动更新Expect脚本?

我想创build一个脚本来更新我所有的GitHub仓库。 我只需要input我的用户名和密码,脚本将通过一个存储库列表,调用git push并通过补充的Expect脚本提供必要的信息。 这是我的bash脚本: #! /bin/bash echo "Updating GitHub projects from project_list.txt." echo read -p "GitHub username: " un read -p "GitHub password: " -s pw echo echo while read line do eval dir=$line echo "Updating:" $dir"." cd $dir $SF/githubexpect $un $pw echo echo done < $SF/project_list.txt $SF是一个全局环境variables,包含我的脚本文件夹的绝对path。 这是githubexpect脚本: #! /usr/bin/expect set un [lindex $argv […]

BASH – 只打印path中最深的目录

我需要一些帮助….. 在我的.bashrc文件中,我有一个非常有用的函数(它可能有点粗糙,准备好了,有点古怪,但它工作得很好!)读取input文件,并在每个文件上使用“树”input行来创build一个目录树。 这棵树然后被打印到一个输出文件(和文件夹的大小一起)。 multitree() { while read cheese do pushd . > /dev/null pushd $cheese > /dev/null echo -e "$cheese \n\n" >> ~/Desktop/$2.txt tree -idf . >> ~/Desktop/$2.txt echo -e "\n\n\n" >> ~/Desktop/$2.txt du -sh –si >> ~/Desktop/$2.txt echo -e "\n\n\n\n\n\n\n" >> ~/Desktop/$2.txt popd > /dev/null done < $1 cat ~/done } 这是一个节省时间没有结束,并输出一个片段,如下所示: ./foo ./foo/bar […]