我想在IP正则表达式匹配($ 2)后从文本文件中获取Word:
FILENAME.TXT:
IP hostname blah blah blah ...
等等等等。IP主机名等等等等... 。 。
我想知道每个IP实例的主机名(我用grep regex找到它并将其存储在$ var中)。我想使用找到的主机名设置为$ host并将其打印到带有IP的文本文件中(已经完成)。
我尝试过在线答案的多种方法,但都打印了空白。
谢谢!
答案 0 :(得分:1)
有关如何最佳地从流中读取的指导,请参阅BashFAQ #1。
#!/bin/bash
# ^^^^ important, not /bin/sh
while read -r -a words; do
# put the array words into $1, $2, $3, etc.
set -- "${words[@]}"
# put $1 -- the first word -- into the variable named "ip"
ip=$1
# remove $1, leaving only hostnames in $1, $2, etc
shift
echo "IP address $ip has the following hostnames:"
for hostname; do # by default, a for loop iterates over $@
echo "- ${hostname}"
done
done < <(grep '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' test_amy_hostrun.txt)
答案 1 :(得分:0)
awk
救援!
$ awk '/^([0-9]{1,3}\.){3}[0-9]{1,3}/{print $1, $2}'
将为您提供以匹配的正则表达式开头的行的IP主机名。
如果您的awk不支持正则表达式间隔,则需要添加--re-interval选项。