Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在unix中从文件中搜索单行模式_Unix_Command - Fatal编程技术网

如何在unix中从文件中搜索单行模式

如何在unix中从文件中搜索单行模式,unix,command,Unix,Command,假设我的文件只有一行 /a/n/v//9.3/b/ld --verbose -o o/c/f/r1 -r o/c/f/fn.o o/c/f/fyt.o L/fs/ed/pl/tls/oe -L/apps/ose/5.5.3//lib/powerpc -lc -lrt -lm -lcp -lel -lip -lubs -lpp -lpc /a/oe/5.3//g3/l/g.3/nf/libgcov.a -lrds -l00_ex -lmcu /a/n/v//9.3/b/ld --verbo

假设我的文件只有一行

/a/n/v//9.3/b/ld  --verbose -o o/c/f/r1 -r o/c/f/fn.o o/c/f/fyt.o L/fs/ed/pl/tls/oe -L/apps/ose/5.5.3//lib/powerpc -lc -lrt -lm -lcp  -lel -lip -lubs -lpp -lpc /a/oe/5.3//g3/l/g.3/nf/libgcov.a  -lrds -l00_ex -lmcu /a/n/v//9.3/b/ld  --verbose -o o/ce/wef/r34
我想搜索以“-l”开头的模式,并在另一个文件中按以下顺序排列

-lc 
-lrt 
-lm 
-lcp  
-lel 
-lip 
-lubs 
-lpp 
-lpc 
-lrds 
-l00_ex 
-lmcu
可以使用什么命令来搜索上述模式

给你:

echo "/a/n/v//9.3/b/ld  --verbose -o o/c/f/r1 -r o/c/f/fn.o o/c/f/fyt.o L/fs/ed/pl/tls/oe -L/apps/ose/5.5.3//lib/powerpc -lc -lrt -lm -lcp  -lel -lip -lubs -lpp -lpc /a/oe/5.3//g3/l/g.3/nf/libgcov.a  -lrds -l00_ex -lmcu /a/n/v//9.3/b/ld  --verbose -o o/ce/wef/r34" \
| awk '{for (i=1;i<=NF;i++) {if ($i ~ /^-l/) print $i }}' | sort
不用说,如果出于某种原因不希望对输出进行排序,只需在末尾删除
| sort
。然后,它将按照cmd行上列出的顺序打印参数。(我想有时候这很重要)

我使用的是一个标准的awk idom,在提供的输入上对每个元素进行迭代

for (i=1;i<=NF;i++)
其中,
$i
是输入中第i个位置的值,
^
表示“必须在字符串的前面”,而
-l
匹配您提供的任何输入

echo
通过管道将数据传输到
awk
表明
awk
非常容易从std-in读取数据,因此您可以使用
grep yourSearchtarget yourFile | awk…
或任何其他返回处理所需行的命令来替换
echo


IHTH

你的回答很有用,它按我预期的方式工作。当我使用echo命令时,它显示为“参数列表太长”。所以我尝试使用“cat”命令cat | awk'{for(I=1;I
for (i=1;i<=NF;i++)
if ($i ~ /^-l/ )