2016-07-26 3 views
-1

У меня есть файл конфигурации с подобным текстом:добавить: после первой колонки с СЭД или AWK

BACKUP=nfs://NASserver/vol/FS01/share/ 

Мне нужно извлечь поля после //, но добавлю: после первой колонки , как это:

NASserver:/vol/FS01/share/ 

Я попытался:

cat file.conf |awk -F"//" /BACKUP/'{print $2}'|awk -F"/" '{print $1":""/"$2"/"$3"/"$4}' 

, который работает и производит:

NASserver:/vol/FS01/share/ 

, но это будет работать в случае, имя NAS нужно будет напечатать $ 5 не будет работать:

смысл: например, если BACKUP строка содержит 5'th FILD или более это мой AWK будет не работает

т.е.

BACKUP=nfs://NASserver/vol/FS01/share/folder1/folder2 

как я могу получить тот же результат с AWK для любой длины строки BACKUP я буду получать

NASserver:/full volumes path 

ответ

0

Если формат фиксируется сказать: «BACKUP = NFS: // ....», то этот следующий код будет делать для любой длины

cat file.conf | sed 's#BACKUP=nfs://\([^/]\+\)\(.*\)#\1:\2#g' 

Если, ваш формат может меняться, я имею в виду например: «FTP = ftp: // ...», затем

Смежные вопросы