Как добиться этого с помощью awk
Для лучшей читаемости / простоты использования создайте awk
скрипт ( myScript.awk
) со следующим содержанием:
{
n=split($1, a, "/")
split(a[1], b, "-")
for (i=1; i<n+1; i++) {
if (i == 1) {
printf a[i]"\t"$2"\n"
}
else {
printf b[1]"-"b[2]"-"a[i]"\t"$2"\n"
}
}
}
Как это работает:
n=split($1, a, "/")
Эта строка занимает первое поле (например, «mmu-miR-15-5p / 16-5p / 195-5p / 424-5p / 497-5p»
для первой строки), разделяет его разделителем «/», сохраняет в массиве a
и хранит количество элементов, разделенных в n
. Для первой строки:
a[1] = "mmu-miR-15-5p"
a[2] = "16-5p"
a[3] = "195-5p"
a[4] = "424-5p"
a[5] = "497-5p"
n = 5
Помните, что инструкции awk
выполняются для каждой строки, поэтому результат для следующей строки будет другим!
split(a[1], b, "-")
Точно так же эта строка берет первый элемент a
и разделяет его разделителем «-». Это дает:
b[1] = "mmu"
b[2] = "miR"
b[3] = "15"
b[4] = "5p"
Когда у нас есть эти массивы, все, что нам нужно сделать, это перебрать количество строк вывода (количество элементов, разделенных «/» во входной строке) и построить каждую строку с битами массивов a
и b
! Мы должны сделать исключение для первой строки, потому что a [1]
уже содержит «mmu-miR-», следовательно, if
для различения этого случая!
Как запустить
awk -f myScript.awk input.txt
Протестировал, выводит то, что вы просите в своем вопросе.
ПРИМЕЧАНИЕ
Как указано в моем комментарии к вашему вопросу, использование одного вызова awk
намного эффективнее и «дружественнее к оболочке», чем цикл для каждой строки вашего файла. .
РЕДАКТИРОВАТЬ ПРИМЕЧАНИЕ Я изменил сценарий после вашего комментария. Теперь все должно быть в порядке!
От имени root (вам может потребоваться запустить sudo -i
или sudo su -
) создайте нового пользователя,
root@pi# useradd -m myuser
затем su
пользователю
root@pi# su - myuser
и отредактируйте файл (как myuser) ~ / .ssh / authorized_keys
и добавьте к нему открытый ключ другого компьютера,
myuser@pi$ echo "your-public-key-in-here" >> ~/.ssh/authorized_keys
# or just open in vi/nano and paste the key inside it
Также убедитесь, что права доступа к файлу Чтение / запись только для владельца - myuser в данном случае
root@pi# chmod 600 /home/myuser/.ssh/authorized_keys
root@pi# chown myuser:myuser /home/myuser/.ssh/authorized_keys