После просмотра некоторых файлов и сравнения моей машины с другой, содержащей другое доменное имя,Мне удалось найти способ изменить доменное имя.
Если dnsdomainname пустое или отсутствует, вторая строка в /etc/hosts
будет иметь вид:
x.x.x.x yourhostname
Измените вторую строку, чтобы она выглядела так:
x.x.x.x yourhostname.yourdnsdomainname yourhostname
Затем вы можете проверить доменное имя DNS в терминале с помощью команды dnsdomainname
, и она вернет установленное вами доменное имя.
Просто переберите все поля, начиная со второго, и соедините первое поле с тем, что у вас уже есть:
$ awk '{ for(i=2;i<=NF;i++){ $i = $1$i }}1' file
Name1 Name1String111 Name1String112
Name2 Name2String121 Name2String122 Name2String123
Name3 Name3String131 Name3String132 Name3String133 Name3String134
1
в конце является сокращением awk для "печатать текущую строку". То же самое можно было бы написать и так:
$ awk '{ for(i=2;i<=NF;i++){ $i = $1$i }; print}' file
Name1 Name1String111 Name1String112
Name2 Name2String121 Name2String122 Name2String123
Name3 Name3String131 Name3String132 Name3String133 Name3String134
Основная идея выше может быть тривиально расширена, чтобы соответствовать всем вашим примерам. NF
— это специальная переменная awk, которая содержит количество полей; всегда будет установлено столько полей, сколько есть в текущей строке. Затем awk
позволяет обращаться к определенным полям с помощью переменной. Итак, если вы установите i=5
, то $i
эквивалентно $5
. Затем это позволяет перебирать все поля, используя формат for(i=2;i<=NF;i++) { }
, который устанавливает i
для всех чисел от 2
до количества полей в этой строке.
Если ваше первое поле не может содержать &
, тогда все, что вам нужно, это:
$ awk '{gsub(/[[:space:]]+/,"&"$1)}1' file
Name1 Name1String111 Name1String112
Name2 Name2String121 Name2String122 Name2String123
Name3 Name3String131 Name3String132 Name3String133 Name3String134
В любом awk:
awk '{ OFS=" "$1; $1=$1 }1' infile
это устанавливает OFS в <SPC><first-column's-value>
, затем повторно -оценивает поля на основе OFS с помощью $1=$1
, затем печатает (см.awk idiom 1).
можно также записать следующим образом
awk '{ OFS=" "$1 } $1=$1' infile
... но тогда это не удастся для строк, первое поле которых 0
; здесь мы можем использовать пустую строку ""
, чтобы заставить awk для назначения строки, поэтому результат $1=$1""
всегда будет оцениваться как истина, и поэтому результат назначения будет истинным, тогда действие печати по умолчанию будет запущено для этих линии тоже:
awk '{ OFS=" "$1 } $1=$1""' infile