Я пытаюсь вставить данные в файл с помощью сценария удара.
Формат файла похож эта (постоянная) (переменная) (константа)
Мой сценарий удара следующие
#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, используемого в первом файле, здесь
keys.txt: http://pastebin.com/bYkJZuiL hellos.txt: http://pastebin.com/6WvXG9yd
С другой стороны, Могу я вставлять данные, делающие его в самой первой строке. Это избежало бы для цикла и создания переменной в целом.
т.е. я хотел бы вставить данные в файл с помощью этой команды
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 в требуемом формате. Однако я все еще не могу объединиться, это делает все это в одном цикле.