Articles of unix

Uniq,但只在部分string

我有这样的string: import abcdfClass1 import abgdfClass2 import abhdfClass3 import zyxdfClass4 import zyxdfClass5 import zyxdfClass6 我想要得到string的第一部分的所有独特的事件。 更具体地说,直到第三期。 所以我这样做: grep "import curam" -hr –include \*.java | sort | gawk -F "." '{print $1"."$2"."$3}' | uniq 这给了我: import abc import abg import abh import zyx 但是,我想要得到完整的string的第一次出现时,string,直到第三个时期是唯一的。 所以,我想得到: import abcdfClass1 import abgdfClass2 import abhdfClass3 import zyxdfClass4 有任何想法吗?

发现 – mtime vs mmin – 奇怪的结果

所以我正在使用bash脚本清除临时文件,并遇到莫名其妙的行为。 # Find using mmin flag find /usr/local/store/file/temp/3_day/ -mmin +$((60*24*3)) -type f > /tmp/old_files_by_mmin.txt # Find using mtime flag find /usr/local/store/file/temp/3_day/ -mtime +3 -type f > /tmp/old_files_by_mtime.txt diff -u /tmp/old_files_by_mmin.txt /tmp/old_files_by_mtime.txt 前几行: — /tmp/old_files_by_mmin.txt 2016-08-03 16:56:42.535458820 +0000 +++ /tmp/old_files_by_mtime.txt 2016-08-03 16:56:58.310681524 +0000 @@ -117,59 +117,6 @@ /usr/local/store/file/temp/3_day/image/resize/2016/07/29/11/15/36/1296924350 /usr/local/store/file/temp/3_day/image/resize/2016/07/29/11/47/52/1950191632 /usr/local/store/file/temp/3_day/image/resize/2016/07/29/11/30/01/711250694 -/usr/local/store/file/temp/3_day/image/resize/2016/07/31/10/04/15/44313759 -/usr/local/store/file/temp/3_day/image/resize/2016/07/31/10/04/15/1589177813 -/usr/local/store/file/temp/3_day/image/resize/2016/07/31/10/04/15/1189074525 -/usr/local/store/file/temp/3_day/image/resize/2016/07/31/10/56/44/91382315 -/usr/local/store/file/temp/3_day/image/resize/2016/07/31/09/43/45/1622776054 -/usr/local/store/file/temp/3_day/image/resize/2016/07/31/01/44/57/1465920226 […]

使用grep cmd来过滤

使用grep或egrep 有多less电子邮件地址是“first.last”的名称格式,并且包含名字以字母的前半部分的字母开头的人? (我想要算) testingfile.txt的摘录 glorious@uole.com hhhhhh ItzStatic jackass The_Epic_Turtle david.webb@cia.gov overthemoon34 smiley362 emilio rico@uole.com ddc44ever check.it@geocities.com dickens@uole.com middle614 IntegrityJeff 5432 jdm-mojo@geocities.com zack.gertrude@gmail.com 要做到这一点,我想过滤每一行,检查是否有一个“@”,并检查第一个字母,看看是否是AM或AM,并检查是否有一段时间。 grep -c "@" testingfile.txt grep -c "\." testingfile.txt grep -c "\." testingfile.txt (尽pipe这只会检查行中是否出现1次)。 grep -c "[a-mA-M]" testingfile.txt (还没有得到这个工作) 我将如何将3个语句组合在一起,以及如何检查每行的第一个字符是在AM还是AM之间的字母?

双引号内的逗号分隔值

我有一个逗号分隔的数据文件,数据由""括起来: $ head file.txt "HD","Sep 13 2016 1:05AM","0001" "DT","273093045","192534" "DT","273097637","192534" .. 我想获得第三列值( 0001 )分配给我的variables。 我试过了 FILE_VER=`cat file.txt | awk -F',' '{if ($1 == "HD") print $3}'` 我没有得到任何值分配给FILE_VER 。 请帮助我正确的语法。

C:接收信号时,停止执行并跳转到程序中的特定点

我写了一个代码,其中两个独立的程序(比如1和2)通过消息队列进行通信。 每个程序发送一个特定的mtype的消息,并等待特定的mtype响应。 基于mtype函数被调用。 程序2最初在等待消息链从程序1发起的消息队列上的select()上等待,并且在经由消息队列的每个成功的通信链回到select()等待程序1启动下一个通信链之后。 我希望程序2必须通过在程序1接收到特定信号(如SIGUUSR1 )的通信链之间停止执行而返回到select() ,以防程序1在当前链中发现错误并希望进行复位将启动一个新的通讯链。 在接收到这个信号后,程序2从所有的函数返回并直接跳转到select() 。 我很遗憾没有分享代码片段,但我希望我已经明白了。 谢谢…

linux阻止文件描述符closures程序退出

我有一个特殊的用例,其中在Linux上使用uinput http://thiemonge.org/getting-started-with-uinput ,创build虚拟input设备的过程,如果它默认情况下,释放所有打开的文件描述符。 在这种情况下,它也会释放所创build的虚拟input设备,并且设备将从/ dev / input中消失。 我想知道这个问题是否有一个简单的解决scheme,最明显的是在程序终止时不释放打开的文件描述符。 更麻烦的一个产生代理过程,只是举行FD。

比较两个目录中的文件和版本,其中一个具有符号链接?

我们正在将一些旧的项目的工具移到一个新的版本控制版本(在同一个磁盘上,使用不同的用户名),我的任务是查找旧帐户中的实用程序新的,并find两个帐户之间的不同文件。 新帐户已经运行了大约一年,人们对旧文件中的某些文件做了(小的)更改,而没有将其更改为新文件。 这些实用程序在远程服务器上,我只能读取(除了我自己的主文件夹)。 旧帐户称为user1,在〜user1 / bin /文件夹中包含所有实用程序,包括每个实用程序的源代码,可执行文件和脚本。 新帐户user2已经被设置为〜user2 / bin /文件夹中的每个“可执行文件/脚本”与子文件夹〜user2 / src / {utilityname} /中的相应文件的符号链接,还包含该可执行文件的来源。 有没有比这两个目录比较容易的方法 find ~user1/bin/ -maxdepth 1 -printf '%s, %p\n' | sort -k2 > user1.txt find -L ~user2/bin/ -maxdepth 1 -printf '%s, %p\n' | sort -k2 > user2.txt 并手动比较结果,看看有什么不同/缺less? 另外,上面的命令只会比较〜user2 / bin /文件夹中的可执行文件/脚本,即使user1和user2之间的user2 / src / {utilityname} /中的源代码相同,例如,脚本中的不同path)。 是否有可能search一个实用程序的符号链接目标所在的文件夹为同名的源文件,以便我可以直接比较user1和user2之间的源文件?

如何启动一个命令,然后在第一次完成后并行启动一系列命令?

我想开始一个命令,等到它结束,然后开始一系列的命令,我想将它们链接在一起。 我已经尝试使用的命令的变化testing; 和&&操作员,但是我希望的行为已经expression出来了。 我想要的是运行以下内容: command1 && command2 && command3; (command4; command5; command6;) 鉴于上述命令,我想要发生以下事情: Run command1 When command1 has successfully completed, start command2 When command2 has successfully completed, start command3 When command3 has succuessfully completed start (command4, command5 and command6) in parallel

从两个不同的文本文件中读取并获取每行的列

我想从两个不同的文本文件中读取(行号相等),并将每一行的第五列相互比较。 但是这对我没有用。 有人帮我吗? 在这里我的代码: df -h –total>current_filesystem_usage.txt if [ -s previous_months_filesystem_usage.txt ] then #reading from two different files and store each line into a variable while read current_file_line <&3 && read previous_file_line <&4 do current_filesystem_name=$(cat $current_file_line | awk {'print $1'}) current_filesystem_usage=$(cat $current_file_line | awk {'print $5'}) previous_filesystem_name=$(cat $previous_file_line | awk {'print $1'}) previous_filesystem_usage=$(cat $previous_file_line | […]

Linux中subprocess的系统限制

我正在阅读Michael Kerrisk的“Linux编程接口”。 在专门讨论系统限制的章节中写道: SUSv3要求sysconf ()返回的值在调用进程的整个生存期内对于一个特定的限制是恒定的。 这是否意味着,如果我得到当前的系统限制,并在当前的过程中以某种方式使用它,那么在fork之后再次在subprocess中再次使用它们是一种好的规则?