我正在尝试使用 bash 脚本将数据插入文件。
该文件的格式如下(常量)(变量)(常量)
我的 bash 脚本如下
#Processing other data by matching a string.
awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt | awk -v OFS=',' '{print $2,$3}' | xargs -n1 ipset -! add allowed_hosts
#Now do the same command again, but only get the matching string.
#Match a strings from these two files and put in the variable "line".
line=$(awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt | awk -v OFS=' ' '{print $1}')
#For each string matched, insert it into a text file.
for word in $line
do
#The sed command to insert text into a file with format
#<string> <word (a single word from the line variable)> <string>
<strike> sed -i '$ a CLIENT_RANDOM $word 010111010011011010' output.txt </strike>
# Changed the sed statement to use printf
printf 'CLIENT_RANDOM %s "$word" 010111010011011010\n' > output.txt
done
由于某种原因,脚本无法打印到文件。有人可以帮忙解决这个问题吗?
第一个文件中使用的 keys.txt 和 hellos.txt 的示例文件在这里
密钥.txt:http://pastebin.com/bYkJZuiL 你好.txt:http://pastebin.com/6WvXG9yd
或者,我可以在第一行插入数据吗?这样可以避免 for 循环并完全避免创建变量。
即我想使用此命令将数据插入文件
awk 'FNR==NR{a[$1];next}($1 in a){print}' keys.txt hellos.txt | awk -v OFS=',' '{print $2,$3}' | xargs -n1 ipset -! add allowed_hosts
示例输出文件(output.txt)
CLIENT_RANDOM <first word from line> 010111010011011010'
CLIENT_RANDOM <second word from line> 010111010011011010'
CLIENT_RANDOM <third word from line> 010111010011011010'
CLIENT_RANDOM <fourth word from line> 010111010011011010'
因此,如果变量 $line 输出“这是一只狐狸”,则 output.txt 文件将类似于
CLIENT_RANDOM This 010111010011011010'
CLIENT_RANDOM is 010111010011011010'
CLIENT_RANDOM a 010111010011011010'
CLIENT_RANDOM fox 010111010011011010'
编辑:我能够解决问题的第一部分。我无法以所需的格式将语句打印到 output.txt。但是,我仍然无法将它们组合起来并在一个循环中完成所有操作。