【问题标题】:print lines between matching strings using awk使用 awk 在匹配字符串之间打印行
【发布时间】:2019-04-02 04:45:52
【问题描述】:

我有一个包含以下条目的文件;

更改为:/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;next}/sftp> bye/{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

等等……

感谢您的支持...

【问题讨论】:

  • 请始终在您的帖子中做两件重要的事情。 1st-始终使用代码标签作为输入和输出样本。第二 - 让我们知道您在帖子中到目前为止所做的尝试。

标签: awk


【解决方案1】:

这里是多行输出,不包括没有字符的行:

$ 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

注意最后有空格和换行

【讨论】:

  • @Vikakmis:期望的输出是什么?那你能更新一下问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
  • 2021-12-26
  • 2020-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多