我在一个变量中有多个 ip 地址。
ActiveIPs=192.168.0.1 192.168.0.2 192.168.0.3
我想将它们保存到这样的文件中,由换行符分隔
192.168.0.1
192.168.0.2
192.168.0.3
我该怎么做呢?
我在一个变量中有多个 ip 地址。
ActiveIPs=192.168.0.1 192.168.0.2 192.168.0.3
我想将它们保存到这样的文件中,由换行符分隔
192.168.0.1
192.168.0.2
192.168.0.3
我该怎么做呢?
$ ActiveIPs="192.168.0.1 192.168.0.2 192.168.0.3"
$ awk '1' RS=' ' <<< "$ActiveIPs"
192.168.0.1
192.168.0.2
192.168.0.3
使用参数扩展将所有空格字符更改为换行符:
$ foo='abc def ghi'
$ echo "${foo// /$'\n'}"
abc
def
ghi
使用参数扩展完全避免了创建新进程,甚至没有内置命令。
如果可以,最好将值保存到数组中:
$ input=( 192.168.0.100 10.0.0.1 192.168.0.101 )
这样,您可以完全控制 shell 如何拆分单词,并且您仍然不必调用外部命令。
$ SAVE_IFS="$IFS"
$ IFS=$'\n'
$ echo "${input[*]}"
192.168.0.100
10.0.0.1
192.168.0.101
printf
将根据需要重复一个模式。
ActiveIPs="192.168.0.1 192.168.0.2 192.168.0.3"
printf "%s\n" $ActiveIPs > file.txt
for ip in $ActiveIPs; do
echo $ip >> file
done
Maybe too basic, but this works:
echo "ActiveIPs= 192.168.0.1 192.168.0.2 192.168.0.3" | cut -d= -f2 | awk '{for (i=1;i<=NF;i++) print $i}'
Output:
192.168.0.1
192.168.0.2
192.168.0.3
To everyone: is there a better way to print a new line between each field in awk
? Tried with OFS='\n'
but did not work.
注意 - 在\
命中换行符之后立即:
echo $ActiveIPs | sed 's/ /\
/g'