Bash:若文件存在,请读取第行,执行此操作*然后*然后*然后,继续执行下一行
直截了当地说:我需要执行以下操作(psuedo代码): 我需要输出如下所示:Bash:若文件存在,请读取第行,执行此操作*然后*然后*然后,继续执行下一行,bash,awk,Bash,Awk,直截了当地说:我需要执行以下操作(psuedo代码): 我需要输出如下所示: Do stuff for host_1 Do stuff for host_2 Do stuff for host_3 Do stuff for host_4 我现在尝试的是: Do stuff for host_1 Do stuff for host_3 Do stuff for host_5 Do stuff for host_7 then Do stuff for host_2 Do stuff for
Do stuff for host_1
Do stuff for host_2
Do stuff for host_3
Do stuff for host_4
我现在尝试的是:
Do stuff for host_1
Do stuff for host_3
Do stuff for host_5
Do stuff for host_7
then
Do stuff for host_2
Do stuff for host_4
Do stuff for host_6
Do stuff for host_8
我不确定我是否说得很清楚,所以如果你需要进一步的澄清,请让我知道
谢谢 我相信你的目标可以在一句话中实现:
awk '{ print "Do stuff for " $1; print "Do stuff for " $2 }' filename
或者:
awk '{ printf "Do stuff for %s\nDo stuff for %s\n", $1, $2 }' filename
无需使用shell读取文件;只需将文件名直接传递给
awk
。上述解决方案的关键是,awk
将从文件中读取,一条记录一条记录(此处:逐行),并将该行中的每个字段(此处:host_1、host_2等)编码为$1和$2。如果每行中的字段数量可变,则解决方案可能会有点不同(可能涉及awk
中的循环),但上述情况很简单。我相信您的目标可以在单个awk
语句中实现:
awk '{ print "Do stuff for " $1; print "Do stuff for " $2 }' filename
或者:
awk '{ printf "Do stuff for %s\nDo stuff for %s\n", $1, $2 }' filename
无需使用shell读取文件;只需将文件名直接传递给
awk
。上述解决方案的关键是,awk
将从文件中读取,一条记录一条记录(此处:逐行),并将该行中的每个字段(此处:host_1、host_2等)编码为$1和$2。如果每行中的字段数量可变,则解决方案可能会有点不同(可能涉及awk
中的循环),但上述情况很简单。在这种情况下,您希望使用for循环来迭代文件中的字:
for host in $(< filename); then
Do something with $host
done
主机的,单位为$(
或者,每行读2个单词
while read host_a host_b; do
Do something with $host_a
Do something with $host_b
done < filename
读取主机a主机b时;做
用$host_a做点什么
使用$host_b执行某些操作
完成<文件名
在这种情况下,您希望使用for循环迭代文件中的单词:
for host in $(< filename); then
Do something with $host
done
主机的,单位为$(
或者,每行读2个单词
while read host_a host_b; do
Do something with $host_a
Do something with $host_b
done < filename
读取主机a主机b时;做
用$host_a做点什么
使用$host_b执行某些操作
完成<文件名
Drr…这很有道理。谢谢,这很有道理。谢谢,你能不能用$(cat文件)为F编写一个bash for loop;do echo“为$F做事情”;完成
不幸的是没有-将awk链接在一起就可以了,谢谢!你能不能在$(cat文件)中为F编写一个bash for loop;do echo“为$F做事情”;完成
不幸的是没有-将awk链接在一起就可以了,谢谢!