печатать строки между совпадающими строками используя awk - PullRequest
0 голосов
/ 29 октября 2018

У меня есть файл, содержащий следующие записи;

Изменение на: / Out / AP / SD

sftp> ls -lrt

-rw-rw-rw-   1 user     group           0 Oct 25 10:24 HOLD_201810261247_M.csv

-rw-rw-rw-   1 user     group           0 Oct 25 10:24 HOLD_201810261247_S.csv

-rw-rw-rw-   1 user     group    1724355981 Oct 25 10:24 HOLD_201810261310.csv

-rw-rw-rw-   1 user     group    2319514056 Oct 25 10:26 FINAL_201810261347.csv

-rw-rw-rw-   1 user     group           0 Oct 25 10:26 SUMMARY_201810261343.csv

-rw-rw-rw-   1 user     group           0 Oct 26 10:16 HOLD_201810271245_S.csv

-rw-rw-rw-   1 user     group           0 Oct 26 10:16 HOLD_201810271246_M.csv

-rw-rw-rw-   1 user     group    1725252957 Oct 26 10:17 HOLD_201810271302.csv

-rw-rw-rw-   1 user     group    2244889790 Oct 26 10:21 FINAL_201810271346.csv

-rw-rw-rw-   1 user     group           0 Oct 26 10:21 SUMMARY_201810271342.csv


sftp> bye

Изменение на: / Out / AS / SD

sftp> ls -lrt

-rw-rw-rw-   1 user     group    174172077 Oct 25 13:01 HOLD_201810261753.csv

-rw-rw-rw-   1 user     group    191231356 Oct 25 13:01 HOLD_201810261753_M.csv

-rw-rw-rw-   1 user     group    177010167 Oct 25 13:01 HOLD_201810261753_S.csv

-rw-rw-rw-   1 user     group    171490539 Oct 25 13:02 FINAL_201810261808.csv

-rw-rw-rw-   1 user     group           0 Oct 25 13:02 SUMMARY_201810261808.csv

-rw-rw-rw-   1 user     group    97238298 Oct 25 13:02 VAS_HOLD_201810261751.csv

sftp> bye

Changing to: /Out/BR/SD

sftp> ls -lrt

-rw-rw-rw-   1 user     group           0 Oct 25 11:24 HOLD_201810261529_S.csv

-rw-rw-rw-   1 user     group    1721060436 Oct 25 11:25 HOLD_201810261544_M.csv

-rw-rw-rw-   1 user     group    1537619643 Oct 25 11:26 HOLD_201810261546.csv

-rw-rw-rw-   1 user     group    1545973081 Oct 25 11:28 FINAL_201810261601.csv

-rw-rw-rw-   1 user     group           0 Oct 25 11:28 SUMMARY_201810261559.csv

sftp> bye

Я хочу напечатать все строки между sftp> ls -lrt и sftp> bye, которые я могу использовать awk '/ sftp> ls -lrt / {flag = 1; далее} / sftp> пока / {flag = 0} flag' имя файла

но я хочу напечатать данные как;

/Out/AP/SD   -rw-rw-rw- 1 user group 0 Oct 25 10:24 HOLD_201810261247_M.csv
/Out/AP/SD   -rw-rw-rw- 1 user group 0 Oct 25 10:24 HOLD_201810261247_S.csv
/Out/AP/SD   -rw-rw-rw- 1 user group 1724355981 Oct 25 10:24 HOLD_201810261310.csv
.........
/Out/AS/SD  -rw-rw-rw- 1 user group 174172077 Oct 25 13:01 HOLD_201810261753.csv
/Out/AS/SD  -rw-rw-rw- 1 user group 191231356 Oct 25 13:01 HOLD_201810261753_M.csv

и так далее ...

Спасибо за вашу поддержку ...

1 Ответ

0 голосов
/ 29 октября 2018

Вот вывод нескольких строк, исключая строки без символа:

$ awk '/^Changing to: / { match($0,/^Changing to: /); dir=substr($0,RLENGTH+1); } /^sftp> ls -lrt$/ { doprint=1; next; } /^sftp> bye$/ { doprint=0; } /.+/ { if ( doprint == 1 ) print(dir " " $0); }' sftp.out
/Out/AP/SD -rw-rw-rw- 1 user group 0 Oct 25 10:24 HOLD_201810261247_M.csv
/Out/AP/SD -rw-rw-rw- 1 user group 0 Oct 25 10:24 HOLD_201810261247_S.csv
/Out/AP/SD -rw-rw-rw- 1 user group 1724355981 Oct 25 10:24 HOLD_201810261310.csv
/Out/AP/SD -rw-rw-rw- 1 user group 2319514056 Oct 25 10:26 FINAL_201810261347.csv
/Out/AP/SD -rw-rw-rw- 1 user group 0 Oct 25 10:26 SUMMARY_201810261343.csv
/Out/AP/SD -rw-rw-rw- 1 user group 0 Oct 26 10:16 HOLD_201810271245_S.csv
/Out/AP/SD -rw-rw-rw- 1 user group 0 Oct 26 10:16 HOLD_201810271246_M.csv
/Out/AP/SD -rw-rw-rw- 1 user group 1725252957 Oct 26 10:17 HOLD_201810271302.csv
/Out/AP/SD -rw-rw-rw- 1 user group 2244889790 Oct 26 10:21 FINAL_201810271346.csv
/Out/AP/SD -rw-rw-rw- 1 user group 0 Oct 26 10:21 SUMMARY_201810271342.csv
/Out/AS/SD -rw-rw-rw- 1 user group 174172077 Oct 25 13:01 HOLD_201810261753.csv
/Out/AS/SD -rw-rw-rw- 1 user group 191231356 Oct 25 13:01 HOLD_201810261753_M.csv
/Out/AS/SD -rw-rw-rw- 1 user group 177010167 Oct 25 13:01 HOLD_201810261753_S.csv
/Out/AS/SD -rw-rw-rw- 1 user group 171490539 Oct 25 13:02 FINAL_201810261808.csv
/Out/AS/SD -rw-rw-rw- 1 user group 0 Oct 25 13:02 SUMMARY_201810261808.csv
/Out/AS/SD -rw-rw-rw- 1 user group 97238298 Oct 25 13:02 VAS_HOLD_201810261751.csv
/Out/BR/SD -rw-rw-rw- 1 user group 0 Oct 25 11:24 HOLD_201810261529_S.csv
/Out/BR/SD -rw-rw-rw- 1 user group 1721060436 Oct 25 11:25 HOLD_201810261544_M.csv
/Out/BR/SD -rw-rw-rw- 1 user group 1537619643 Oct 25 11:26 HOLD_201810261546.csv
/Out/BR/SD -rw-rw-rw- 1 user group 1545973081 Oct 25 11:28 FINAL_201810261601.csv
/Out/BR/SD -rw-rw-rw- 1 user group 0 Oct 25 11:28 SUMMARY_201810261559.csv

Если вам нужен вывод в одну строку, как это было в исходном вопросе:

$ awk '/^Changing to: / { match($0,/^Changing to: /); printf("%s ",substr($0,RLENGTH+1)); } /^sftp> ls -lrt$/ { doprint=1; next; } /^sftp> bye$/ { doprint=0; } /.+/ { if (doprint == 1) printf("%s ",$0); } END { print(""); }' sftp.out
/Out/AP/SD -rw-rw-rw- 1 user group 0 Oct 25 10:24 HOLD_201810261247_M.csv -rw-rw-rw- 1 user group 0 Oct 25 10:24 HOLD_201810261247_S.csv -rw-rw-rw- 1 user group 1724355981 Oct 25 10:24 HOLD_201810261310.csv -rw-rw-rw- 1 user group 2319514056 Oct 25 10:26 FINAL_201810261347.csv -rw-rw-rw- 1 user group 0 Oct 25 10:26 SUMMARY_201810261343.csv -rw-rw-rw- 1 user group 0 Oct 26 10:16 HOLD_201810271245_S.csv -rw-rw-rw- 1 user group 0 Oct 26 10:16 HOLD_201810271246_M.csv -rw-rw-rw- 1 user group 1725252957 Oct 26 10:17 HOLD_201810271302.csv -rw-rw-rw- 1 user group 2244889790 Oct 26 10:21 FINAL_201810271346.csv -rw-rw-rw- 1 user group 0 Oct 26 10:21 SUMMARY_201810271342.csv /Out/AS/SD -rw-rw-rw- 1 user group 174172077 Oct 25 13:01 HOLD_201810261753.csv -rw-rw-rw- 1 user group 191231356 Oct 25 13:01 HOLD_201810261753_M.csv -rw-rw-rw- 1 user group 177010167 Oct 25 13:01 HOLD_201810261753_S.csv -rw-rw-rw- 1 user group 171490539 Oct 25 13:02 FINAL_201810261808.csv -rw-rw-rw- 1 user group 0 Oct 25 13:02 SUMMARY_201810261808.csv -rw-rw-rw- 1 user group 97238298 Oct 25 13:02 VAS_HOLD_201810261751.csv /Out/BR/SD -rw-rw-rw- 1 user group 0 Oct 25 11:24 HOLD_201810261529_S.csv -rw-rw-rw- 1 user group 1721060436 Oct 25 11:25 HOLD_201810261544_M.csv -rw-rw-rw- 1 user group 1537619643 Oct 25 11:26 HOLD_201810261546.csv -rw-rw-rw- 1 user group 1545973081 Oct 25 11:28 FINAL_201810261601.csv -rw-rw-rw- 1 user group 0 Oct 25 11:28 SUMMARY_201810261559.csv

обратите внимание, что в конце добавлен пробел и новая строка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...