Articles of shell

使用“uniq -c”命令时需要从输出中删除计数

我正在尝试读取一个文件,并按特定字段的出现次数对其进行sorting。 假设我想从日志文件中找出最重复的date,然后使用uniq -c选项并按降序对其进行sorting。 像这样的东西 uniq -c | sort -nr 这会产生这样的输出 – 809 23/Dec/2008:19:20 实际上计数的第一个字段是我的问题….我想从上面的输出得到ony的date,但米无法得到这个。 我试图使用切割命令,并做到了这一点 uniq -c | sort -nr | cut -d' ' -f2 但这只是打印空白…请有人可以帮助我获得date,并砍掉计数。 我只想要 23/Dec/2008:19:20 谢谢

Shell:在目录下查找列表中的文件

我有一个列表,其中包含大约1000个文件名在一个目录及其子目录下进行search。 有数百个文件超过1,000,000个的子目录。 以下命令将运行1000次查找: cat filelist.txt | while read f; do find /dir -name $f; done 有更快的方法来做到这一点?

如何在root用户下从PHP运行一个bash脚本

如何从根目录用户 (具有所有权限),而不是没有用户的PHP运行bash脚本 – PHP的默认用户? 多数民众赞成我sudo visudo后输出: Defaults env_keep += "LINES COLUMNS" Defaults env_keep += "LSCOLORS" Defaults env_keep += "SSH_AUTH_SOCK" Defaults env_keep += "TZ" Defaults env_keep += "DISPLAY XAUTHORIZATION XAUTHORITY" Defaults env_keep += "EDITOR VISUAL" Defaults env_keep += "HOME MAIL" #User privilege specification root ALL=(ALL) ALL %admin ALL=(ALL) ALL # Uncomment to allow people in group […]

在ac程序中运行一个shell命令

我想在我的c程序中运行一个shell命令。 但事情是,我不想让我的程序等待,直到命令执行。 不需要读取shell命令的输出(无论如何都不返回数据)所以基本上,这是可能的吗?

pipe道实施

我想实现一个支持pipe道的linux shell。 我已经完成了简单的命令,在后台运行的命令,redirect,但pipe道仍然丢失。 我已经阅读了一些代码片段,但仍然无法理清工作的解决scheme。 我到目前为止: int fd[2]; pipe(fd); pid_t pid = fork(); if (pid == -1) return -1; if (pid == 0) { close(fd[1]); //close write to pipe, in child execlp("cat", "cat", "names.txt", NULL); } else { close(fd[0]); //close read from pipe, in parent execlp("sort", "sort", NULL); } 我是一个新手程序员,正如你可能知道的那样,当我正在编写一些我不太了解的东西时,显然是这样,我喜欢从一些非常简单和具体的东西开始,然后从那里开始构build。 因此,在能够在pipe道中实现三个或更多不同的命令之前,我希望能够计算“ls names.txt | sort”或类似的东西,其中names.txt是一个名称文件无序的文件。 更新的代码,但仍然不起作用。 谢谢。

将输出redirect到C中的文件

我用C编写了一个基本的shell来执行基本的命令,它会执行命令ls , ls -al , ls -al | more ls -al | more等等 我想在我的shell中执行以下命令。 喜欢 ; ls -al > a.txt 这会给我一个包含ls -al进程输出的a.txt文件。 我发现了一个解决scheme,它改变了我的shell中的命令,如[command1] | tee [filename] [command1] | tee [filename] 。 在这种情况下,它会将ls -al > a.txt更改为ls -al | tee a.txt ls -al | tee a.txt 。 但是这个过程也将输出传给文件和terminal。 如何停止在terminal打印输出。 还是有更好的解决scheme,而不是使用tee命令。 提前致谢…

如何创build一个dynamicvariables并为其赋值?

我正在尝试创build一个dynamicvariables并将其分配给它 #!/bin/bash . . active_id=$p_val flag_$active_id=100 但是我这样做是错误的,有什么帮助?

如何从awk中的variables中裁减空白?

假设$ 2是我的variables。 我试过从 awk -F\, '{print $2 ":"}' 至 awk -F\, '{print gsub(/[ \t]+$/, "", $2) ":"}' 但是从印刷到印刷什么都没有。

如何在一个模式之前和行号之后使用sed插入一行?

如何在模式之前和行号之后使用sed将一行插入到文件中? 以及如何使用相同的shell脚本? 这样在每个模式行之前插入一行: sed '/Sysadmin/i \ Linux Scripting' filename.txt 这改变了这个使用行号范围: sed '1,$ s/A/a/' 所以现在如何使用这两个(我不能)在一个模式之前和一个行号或另一种方法之后使用sed将一行插入到文件中?

sorting在一行的最后一个字段

sorting行的列表最简单的方法是什么,sorting每行的最后一个字段? 每行可能有不定数量的字段。 就像是 sort -k -1 是我想要的,但sorting(1)不采取负数来从结尾而不是从开始select字段。 我也想能够select字段分隔符。 编辑:添加一些特殊的问题:我想sorting的列表是path名列表。 path名可以是任意深度的,因此可以是可变数量的字段。 我想对文件名组件进行sorting。 这些附加信息可能会改变如何操纵行来提取最后一个字段(可能会使用basename(1)),但不会改变sorting要求。 例如 /a/b/c/10-foo /a/b/c/20-bar /a/b/c/50-baz /a/d/30-bob /a/e/f/g/h/01-do-this-first /a/e/f/g/h/99-local 我希望这个列表按照文件名sorting,这些文件名都以数字开头,表示文件应该被读取的顺序。 我在下面添加了我的答案,这是我目前正在做的。 我希望有一个更简单的方法 – 也许是一个不同的sorting工具 – 可能不需要操纵数据。