小编rye*_*ayo的帖子

只打印第一次匹配

我有一个代码片段,用于解析日志文件并打印我需要的信息。

for i in $(cat ~/jlog/"$2"); do
        grep "$1" ~/jlog/"$2" |
        awk '/\([a-zA-Z0-9.]+/ {print $7}' 
 done;
Run Code Online (Sandbox Code Playgroud)

问题是当我输入输入时,它会多次显示答案:

(1.3.51.0.1.1.10.10.30.48.2084865.2084839/1.2.840.113619.2.284.3.17454802.933.1401109176.280.1)
(1.3.51.0.1.1.10.10.30.48.2084865.2084839/1.2.840.113619.2.284.3.17454802.933.1401109176.283.1)
(1.3.51.0.1.1.10.10.30.48.2084865.2084839/1.2.840.113619.2.80.977011700.14346.1401109696.2)
(1.3.51.0.1.1.10.10.30.48.2084865.2084839/1.2.840.113619.2.80.977011700.14346.1401109706.51)
(1.3.51.0.1.1.10.10.30.48.2084865.2084839/1.2.840.113619.2.80.977011700.14346.1401109758.100)
(1.3.51.0.1.1.10.10.30.48.2084865.2084839/1.2.840.113619.2.80.977011700.14346.1401109773.149)
(1.3.51.0.1.1.10.10.30.48.2084865.2084839/1.2.840.113619.2.80.977011700.14346.1401109810.198)
(1.3.51.0.1.1.10.10.30.48.2084865.2084839/1.2.840.113619.2.80.977011700.14346.1401109818.247)
Run Code Online (Sandbox Code Playgroud)

有什么办法可以修剪这个,所以我只能显示第一组数据一次。我只需要1.3.51.0.1.1.10.10.30.48.2084865.2084839打印一次。

我也尝试将其更改为这个,但 Bash 不喜欢它:

for i in $(cat ~/jlog/"$2"); do
        grep "$1" ~/jlog/"$2" |
        awk '/\([a-zA-Z0-9.]+/' |
        awk -F'[(/]' ' {print $2, exit}'
done;
Run Code Online (Sandbox Code Playgroud)

然后尝试了这个:

for i in $(cat ~/jlog/"$2"); do
        grep "$1" ~/jlog/"$2" |
        awk -F'[(/]' '/\([a-zA-Z0-9.]+/ {print $2, exit }'
done;
Run Code Online (Sandbox Code Playgroud)

bash scripts

6
推荐指数
1
解决办法
3万
查看次数

在 Linux 中设置读/写/执行权限

我刚刚创建了一个组,我希望将 RWX 添加到 root 和组中。我可以使用什么命令来设置权限?我也希望世界没有权限

command-line

5
推荐指数
1
解决办法
7万
查看次数

标签 统计

bash ×1

command-line ×1

scripts ×1