使用 sed 将数据插入文件 bash

使用 sed 将数据插入文件 bash

我正在尝试使用 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。但是,我仍然无法将它们组合起来并在一个循环中完成所有操作。

相关内容