Сброс терминала после прерывания 'read -r -s'

Переменные не раскрываются в одинарных кавычках, а именно так вы передаете команды в первом случае. Таким образом, в первом случае оболочка на удаленной стороне никогда не получает ваши значения, она просто получает literal $1 и $2, а их не существует, поэтому они расширяются в ничто. Поэтому

$ var=foo
$ echo '$var'
$var
$ echo "$var"
foo

pscp не получает никаких значений, когда вы передаете $1 и $2 (потому что они не существуют в удаленной оболочке), поэтому он выдает ошибку при запуске. Вот как в итоге вызывается pscp:

pscp -pw final_result.txt

Используйте двойные кавычки, когда вы хотите, чтобы переменные расширялись текущей оболочкой, а не одинарные кавычки. Использование одинарных кавычек в данном случае было бы уместно, если бы вы хотели, чтобы переменные были расширены оболочкой remote.

1
11.02.2019, 20:32
2 ответа

Основываясь на примерах, я предполагаю, что имена файлов имеют формат MMDDYY.txt, где MM— месяц, DD— день, а YY— год.

Вы можете изменить порядок символов для сортировки, используяsed

sed 's/\(....\)\(..\)/\2\1/'| sort | sed 's/\(..\)\(....\)/\2\1/'

или если ваш sedподдерживает параметр -Eдля расширенных регулярных выражений

sed -E 's/(....)(..)/\2\1/'| sort | sed -E 's/(..)(....)/\2\1/'

Первый sedзаменит первую группу из 4 символов(MMDD)и вторую группу из 2 символов(YY). Что бы ни последовало за (.txt), это останется неизменным. Это изменит 100518.txtна 181005.txtи т. д. После сортировки символы заменяются обратно.

Этот сценарий предполагает, что список имен файлов уже отфильтрован и содержит только имена в правильном формате. В противном случае шаблоны соответствия должны быть более сложными, чтобы соответствовать только 6 числам, за которыми следует .txt.

sortбез опции самая высокая дата будет последней, используйте sort -r, чтобы изменить порядок

0
28.01.2020, 00:19

Если вы уже предполагаете, что временные метки находятся в поле 9, вы можете указать sortвыделить три поля даты:

sort -k9.24,9.25n -k9.20,9.21n -k9.22,9.23n FTP_FILES_LIST

Вот пример обработки вашего примера ввода с использованием опции --debugсортировки GNU; вы можете увидеть ряд пунктирных линий, обозначающих ключи сортировки, которые sortпоследовательно использовались для определения порядка:

-r-xr-xr-x    1 14       2000     34010091 Oct 05 00:42 AT_20_10_REL_ARCA_100518.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________
-r-xr-xr-x    1 14       2000     34025780 Nov 26 02:55 AT_20_10_REL_ARCA_112618.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________
-r-xr-xr-x    1 14       2000     34037370 Dec 19 22:10 AT_20_10_REL_ARCA_121918.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________
-r-xr-xr-x    1 14       2000     34037013 Jan 17 00:45 AT_20_10_REL_ARCA_011719.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________
-r-xr-xr-x    1 14       2000     34036101 Jan 18 11:13 AT_20_10_REL_ARCA_011819.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________
-r-xr-xr-x    1 14       2000     34036564 Jan 25 01:09 AT_20_10_REL_ARCA_012519.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________
-r-xr-xr-x    1 14       2000     34041306 Feb 03 21:42 AT_20_10_REL_ARCA_020319.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________
-r-xr-xr-x    1 14       2000     34099207 Feb 08 03:15 AT_20_10_REL_ARCA_020819.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________
-r-xr-xr-x    1 14       2000     34099827 Feb 11 02:55 AT_20_10_REL_ARCA_021119.txt
                                                                              __
                                                                          __
                                                                            __
____________________________________________________________________________________

Выполнение сортировки таким способом является хрупким, поскольку оно зависит от того, что имена файлов начинаются с 9-го пробела -в поле с разделителями. Альтернативой может быть использование некоторой зависимости от самого шаблона имени файла, возможно, появление метки времени в 6-м символе подчеркивания -с разделителем:

sort -t_ -k6.5,6.6n -k6.1,6.2n -k6.3n,6.4n FTP_FILES_LIST
0
28.01.2020, 00:19

Теги

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