Prueba esto:
awk -F'[_.]' '{print $2; print $1}' <<< "3302491505_8139829707_13970101.csv"
-F
establece el separador de campo en _
o .
. Permite configurar los campos $1
y $2
.
Да, есть:
$ ssh host.example.com echo this is a test
this is a test
Это зависит от команды. В общем, когда кто-то передает команду на удаленную машину, необходимо экранировать любые символы в этой команде, которые обычно интерпретируются локальной оболочкой. Рискуя чрезмерного обобщения, если нет символов, которые локальная оболочка пыталась бы интерпретировать, то, вероятно, кавычки не нужны. Следствием этого является то, что если символы оболочки правильно экранированы (, так что локальная оболочка не будет их интерпретировать ), то команда, которая в противном случае потребовала бы кавычек, может быть переписана -так, чтобы она не интерпретировалась. требуют цитаты.
Попробуйте записать дату удаленной системы в файл с именем date.out
в домашнем каталоге пользователя user
на удаленной системе host
. Один из способов сделать это с помощью кавычек —:
ssh user@remote 'date > date.out'
Неправильная попытка запустить эту команду без кавычек может быть:
ssh user@remote date > date.out
Это приводит к тому, что локальная обработка оболочки > date.out
оставляет удаленную команду ssh просто date
. Команда date
запускается удаленно, но ее вывод сохраняется локально. Чтобы этого избежать, нужно экранировать символ >
:
ssh user@remote date \> date.out
Выполнив эту команду, мы можем перейти ко второму примеру. Давайте проверим выходной файл, используя команду в кавычках для ls
файла и cat
его содержимого:
ssh user@remote 'ls -l date.out; cat date.out'
Команда без кавычек:
ssh user@remote ls -l date.out; cat date.out
удаленно запускает только команду ls
. Команда cat
выполняется локально, поскольку локальная оболочка интерпретировала символ точки с запятой как разделитель между двумя командами.
Для корректного выполнения команды без кавычек используется:
ssh user@remote ls -l date.out\; cat date.out
Аналогичные правила применяются, когда кто-то хочет использовать расширения переменных или параметров в команде. Если переменная определена в локальной среде, кавычки (или escape-последовательности )часто не нужны. Если локальный пользователь alex
выдает команду:
ssh user@remote echo $USER
Выход будет alex
,потому что локальное значение $USER было расширено в команду ssh до того, как оно было отправлено на удаленный хост. Если бы вместо этого команда была двойной -в кавычках:
ssh user@remote "echo $USER"
Результат будет таким же, потому что локальная оболочка будет расширять переменные, заключенные в двойные кавычки. Однако любая из команд:
ssh user@remote 'echo $USER'
или
ssh user@remote echo \$USER
напечатает user
, потому что расширение строки $USER
выполняется удаленным хостом, а не локальной оболочкой.