Articles of unix

在Unix中删除ANSI颜色转义的最佳方法

我有一个perl progaram其打印输出的颜色。 如果我rediect文件中的输出,并在vi中打开我看到颜色特殊字符。 像这样的东西。 ^[[31;43mAnd this is red on_yellow too^[[0m 从输出文件中删除此颜色字符的最佳方法是什么? 谢谢 更新: 我尝试了正则expression式。 这个对我有用: cat -va|head ^[[30;41mThis is black on_red^[[0m ^[[30;41mAnd this is black on_red too^[[0m ^[[30;42mThis is black on_green^[[0m ^[[30;42mAnd this is black on_green too^[[0m ^[[30;43mThis is black on_yellow^[[0m ^[[30;43mAnd this is black on_yellow too^[[0m ^[[30;44mThis is black on_blue^[[0m ^[[30;44mAnd this is black […]

如何基于两个文件之间的公共字段使用AWK删除一个文件中的重复行?

我有两个文件 文件1包含3个字段 文件2包含4个字段 文件1的行数比文件2的行数小得多 我想通过以下操作来比较基于第一个字段的两个文件 如果文件1的任何一行中的第一个字段出现在文件2的一行的第一个字段中,则不要打印该文件2的该行。 任何意见将不胜感激。 Input File 1 S13109 3739 31082 S45002 3800 31873 S43722 3313 26638 Input File 2 S13109 3738 31081 0 S13109 3737 31080 0 S00033 3008 29985 0 S00033 3007 29984 0 S00022 4130 31838 0 S00022 4129 31837 0 S00188 3317 27372 0 S45002 3759 31832 0 S45002 […]

从Java触发shell脚本的最佳方法

我有一个我想从J2EE Web应用程序触发的shell脚本。 该脚本做了很多事情 – 处理,FTP等 – 这是一个遗留问题。 运行需要很长时间。 我想知道什么是最好的方法。 我希望用户能够点击链接,触发脚本,并向用户显示一条消息,说明脚本已经启动。 我希望HTTP请求/响应周期是瞬时的,不pipe我的脚本需要很长时间才能运行。 我可以想到三个select: 在处理用户点击的过程中产生一个新的线程。 但是,我不认为这符合J2EE规范。 向HTTP响应stream发送一些输出并在触发脚本之前提交它。 这给出了HTTP请求/响应循环已经完成的错觉,但实际上处理请求的线程仍然在那里等待shell脚本完成。 所以我已经基本上劫持了容器HTTP处理线程为我自己的目的。 创build一个包装脚本,在后台启动我的主脚本。 这将使请求/响应周期在容器中正常完成。 以上所有将使用servlet和Runtime.getRuntime()。exec()。 这在Java 1.4.2上使用Oracle的OC4J应用服务器在Solaris上运行。 请问有没有人有任何意见哪个是最简单的解决scheme,为什么? 还是有没有人有更好的方法? 我们已经有了Quartz,但是我们不希望将shell脚本重新实现为Java进程。 谢谢。

如何比较两个unix命令的输出以找出差异?

我不想创build新文件。 我想要完成类似于: cmd1 > a cmd2 > b cat abb | sort | uniq -u 但不使用文件a和b。

UNIX shell脚本,用于从文件运行grep命令列表并获取单个分隔文件的结果

我是unix编程的初学者,也是自动化工作的一种方式 我想运行一个grep命令列表,并在单个分隔文件中获取所有grep命令的输出。 我正在使用下面的bash脚本。 但它不工作。 样机sh文件: !/bin/sh grep -l abcd123 grep -l abcd124 grep -l abcd125 并在运行时使用下面的命令 $ ./Mockup.sh > output.txt 这是正确的命令吗? 如何在输出文件中同时获得grep命令和输出? 如何在每个命令和结果后分隔输出?

如何为读命令添加换行符?

read -p "Please Enter a Message:" message 如何在Message:之后添加换行符?

转义sedreplacestring中的换行符

这里是我尝试在运行bash用sedreplace一个换行符 $> echo 'abc' | sed 's/b/\n/' anc 不,不是的 $> echo 'abc' | sed 's/b/\\n/' a\nc 不,那也不是。 我想要的输出是 a c 帮帮我!

C Minishell添加pipe道

所以我正在制作一个UNIX minishell,并试图添加pipe道,所以我可以做这样的事情: ps aux | grep dh | grep -v grep | cut -c1-5 不过,我在缠绕pipe道部分时遇到了麻烦。 我把所有的“|” 字符为0,然后将每行作为普通线路运行。 但是,我试图转移输出和input。 一个命令的input需要是前一个命令的输出,一个命令的输出需要是下一个命令的input。 我正在做这个使用pipe道,但是我不知道在哪里调用pipe()以及在哪里closures它们。 从主处理函数processline()中,我有这样的代码: if((pix = findUnquotChar(line_itr, '|'))) { line_itr[pix++] = 0; if(pipe (fd) < 0) perror("pipe"); processline(line_itr, inFD, fd[1], pl_flags); line_itr = &(line_itr[pix]); while((pix = findUnquotChar(line_itr, '|')) && pix < line_len) { line_itr[pix++] = 0; //? if(pipe […]

使用fork()在C(不是C ++)中创build3个孩子

嗨,我一直在制定一项计划,让孩子们分叉,然后再从每个孩子那里分娩更多的孩子,但这不是我需要帮助的。 当我运行我的程序(在这里它是一个function,但工作原理是一样的)我应该有一个父母(PPID)产卵3个孩子(PIDS = 1,2,3),但我得到的是相同的PID和PPID 3次(我现在的代码),或者在我得到3个父母之前,每个父母都有一个孩子,PPIDS与PIDS不同,但PPID与以前的孩子PID一样。 在我最近的尝试中,从不在父子(父亲)的信息上方显示孩子(儿子)。 它应该看起来像这样 [dad] hi am I PID 1234 and I come from ####(dont care what this number is) [son] hi i am PID 1111 and I come from PPID 1234 [son] hi i am PID 1112 and I come from PPID 1234 [son] hi i am PID 1113 and I […]

shell如何处理无限循环

无论何时我需要限制shell命令输出,我使用较less的分页结果: cat file_with_long_content | less 这工作得很好,但是我很好奇,即使输出永远不会结束,仍然可以工作,请考虑在inf.sh文件中使用以下脚本: while true; do date; done 然后我跑 sh inf.sh | less 而且它仍然可以对结果进行重新分页,所以说pipe道输出结果而不是等待命令完成才能输出结果是正确的吗?