如何将正则表达式结果附加到 bash 中的现有 txt 文件?

How to append regex result to existing txt file in bash?

假设我有一个包含 IP 地址的现有文本文件。

ip_list.txt

192.168.1.1
10.135.135.2

我正在 运行ning 一个脚本,该脚本采用原始 json 每个包含一个 IP 地址,然后使用正则表达式将 IP 提取出来并将其附加到文件中。但是它一直在附加空行。我不是一个好的 bash 用户,所以它甚至可能只是一个语法错误。

ip = $(grep -Eo '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])' '')

echo "$ip" >> /root/temp/ip_list.txt

我在这里做错了什么?我觉得我很亲近。

如果我运行grep -Eo '(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])' 'log_file.txt

我 运行 不关心任何问题。

你应该删除 = 两边的空格,并确保在 </code> 周围使用双引号以允许变量扩展(它不是在单引号内执行):</p> <pre><code>ip=$(grep -Eo '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' "")

我还使用了稍微缩短的 IP 正则表达式模式。

查看 online Bash demo:

f="192.168.1.1
10.135.135.2"
ip=$(grep -Eo '((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)' <<< "$f")
echo "$ip"

输出:

192.168.1.1
10.135.135.2