Вставка данных в удар файла с помощью sed

Я пытаюсь вставить данные в файл с помощью сценария удара.

Формат файла похож эта (постоянная) (переменная) (константа)

Мой сценарий удара следующие

#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 в требуемом формате. Однако я все еще не могу объединиться, это делает все это в одном цикле.

1
задан 21 December 2016 в 03:34

0 ответов

Другие вопросы по тегам:

Похожие вопросы: