заменить точку на запятую

В руководстве создана ссылка, которая разрешается в абсолютный путь. Вы создали символическую ссылку, которая разрешается в относительный путь.

Создает абсолютную ссылку:

ln -s /application/nginx-1.8.0 /application/nginx

nginx всегда будет разрешаться в /application/nginix-1.8.0, даже если вы переместите nginx в новый каталог.

Используйте абсолютную ссылку, если nginx может перемещаться, а /application/nginix-1.8.0 никогда не будет перемещаться.

Создает относительную ссылку:

ln -s nginx-1.8.0 /application/nginx

nginx всегда будет разрешаться в nginx-1.8.0 в любом каталоге nginx в

При использовании -s для создания символической ссылки первый параметр может даже не существовать в вашей файловой системе. Создание символической ссылки на файл или путь, который еще не существует, не является ошибкой.

Используйте эту относительную ссылку, если nginix всегда будет находиться в одном и том же каталоге относительно к nginx-1.8.0

Дополнительные примеры относительных ссылок

ln -s ../real alpha      # alpha will always point to real in alpha's parent directory
ln -s real alpha         # alpha will always point to real in alpha's directory
ln -s subdir/real alpha  # alpha will always point to subdir/real in alpha's directory
0
21.11.2018, 23:35
2 ответа
bash-4.1$ cat file
1.351364711.103.7319660.2010-01-01 00:00:00
1.345529841.103.7372875.2010-01-01 00:00:49
1.342955629.103.7455272.2010-01-01 00:01:42
1.339694956.103.7520503.2010-01-01 00:02:28

bash-4.1$ awk -F. '{print $NF,$1"."$2,$3"."$4}' OFS=, file
2010-01-01 00:00:00,1.351364711,103.7319660
2010-01-01 00:00:49,1.345529841,103.7372875
2010-01-01 00:01:42,1.342955629,103.7455272
2010-01-01 00:02:28,1.339694956,103.7520503
2
28.01.2020, 02:25

Использованиеsed:

$ sed 's/\./,/4; s/\./,/2' file
1.351364711,103.7319660,2010-01-01 00:00:00
1.345529841,103.7372875,2010-01-01 00:00:49
1.342955629,103.7455272,2010-01-01 00:01:42
1.339694956,103.7520503,2010-01-01 00:02:28

Это сначала заменяет 4-ю точку запятой, затем 2-ю.

Мы могли бы сделать замены и в обратном порядке, но поскольку замена 2-й точки удаляет точку из строки, точка, первоначально бывшая 4-й, становится 3-й точкой:

$ sed 's/\./,/2; s/\./,/3' file
1.351364711,103.7319660,2010-01-01 00:00:00
1.345529841,103.7372875,2010-01-01 00:00:49
1.342955629,103.7455272,2010-01-01 00:01:42
1.339694956,103.7520503,2010-01-01 00:02:28

Синтаксис s/.../.../n(, где n— цифра, )заменяет n :-е совпадающее вхождение в строке.

Переместить последний столбец вперед можно с помощью

s/^\(.*\),\([^,]*\)/\2,\1/

Т. е. сопоставить элементы от начала строки до запятой, затем запятой, затем элементы, в которых больше нет запятых.

Таким образом, полная команда может быть

$ sed 's/\./,/4; s/\./,/2; s/^\(.*\),\([^,]*\)/\2,\1/' file
2010-01-01 00:00:00,1.351364711,103.7319660
2010-01-01 00:00:49,1.345529841,103.7372875
2010-01-01 00:01:42,1.342955629,103.7455272
2010-01-01 00:02:28,1.339694956,103.7520503
1
28.01.2020, 02:25

Теги

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