我有一个针对文件运行的脚本,它接受用户的参数,并通过grep和awk发送以获得所需的列。它将返回多行。我想要做的是通过grep\awk的输出读取(或类似的东西),并通过另一个脚本(./lookup)运行它。我的问题是如何循环每一行,并通过脚本中的脚本运行该行上的内容。希望这是有意义的,我对脚本和linux还不熟悉。
#!/bin/sh
x=$(grep "$*" "$c"|awk '{print $6}')
while read LINE
do
./lookup $x
done
这似乎是可行的,但只适用于输出的第一行。它还要求我按enter
已经尝试了一段时间让它发挥作用,但没有成功。我知道关于这个话题也有类似的帖子,但是他们的例子不起作用,或者他们的regexp对我来说太暴力了。这太重了:
我的问题很简单,我有一个用deploy.sh脚本创建的统一的javascript文件,并且希望删除出现第一个字符为"//“的每一行,忽略前面的任何空格和选项卡:
// Remove this line
var foobar = "sometext";
// remove this line with tab(s) before comment
function foobar(); // Do not r
我正在编写一个解析.xml文件的c++函数。我使用system("grep");键入system call以使用linux命令。现在我的问题是,我想在给定的标签中选择多行。例如。
content of .xml file
====================
<state>
<text> hi this is first li </text>
<sec> dsfn sdlkf sfd </sec>
</state>
===================
我想打印和标签之间的所有内容。我可以使用哪
我一直使用带有perl扩展的grep进行多行匹配.However,结果发现所有匹配的行数取决于第一个多行匹配的行数!
查找c函数的grep正则表达式启动:
grep -iPn '^[^\S\n]*?\w+\s+\w+?\s*\([\w-0-9,/* \s]*\)\s*\{$'
我可以用一个例子更好地解释:
假设源文件中存在这两个函数
int f1(int a) {
int
f2 (int b )
{
在这种情况下,grep成功匹配正则表达式,输出到stdout的行号与源文件的行号相同。
当一
我试图编辑一个Fedora 19 DVD ISO,以添加一个启动文件。然后,我需要这个ISO烧焦到一个USB棒,以注入。
引导时所遇到的错误是
Warning: Could not boot.
Warning: /dev/root does not exist
为了试图确定流程的哪一部分失败了,我已经将流程分解为不同的阶段。
步骤1:
烧掉原来的ISO "Fedora-19-x86_64-DVD.iso“(可用的-> 这里),看看是否会安装。
dd if=/path/to/iso of=/dev/sdc
烧录此映像是成功的,它的安装没有问题。
步骤2:
超出ISO,重新包装,烧掉
我不太明白下面的if-语句实际上做了什么,从条件输出可能是什么的意义上说:
if linux-command-1 | linux-command-2 | linux-command-3 > /dev/null
我的理解是:
Linux 1被执行,它的输出被管道传输到2作为输入.
Linux 2用LC1的输入执行,它的输出被管道传输到3中.
Linux 3使用LC2的输入执行,它的输出被重定向到/dev/null,基本上不会出现。
,但是实际的if语句呢?是什么让它变得真实或错误呢?
为了进一步说明,下面是一个实际命令的示例:
if ps ax | grep -v gr
我正试图在一个目录(Linux)的所有源文件中更新或插入一些注释,如版权头。我的文件不一致,所以其中一些文件已经有了头文件,而其他文件根本没有头文件。我尝试用sed查看前几行并替换。替换我的意思是用最新的文件替换已经有版权头的文件。
sed -e '1,10 s/Copyright/*Copyright*/g' file
但是,如果它没有找到模式,则不会插入。我如何才能做到这一点?
我在注释中提供的示例或者我尝试实际替换/插入的示例是一个多行的典型版权头,如下所示
/*
* Copyright 1234 XXXNAME, XYZPlace
* text text text