tee,sed - 如何去除由开始和停止符号表示的文本块

时间:2017-10-24 15:44:36

标签: bash sed gnu tee

当我进行构建时,我经常使用make --print-data-base来调试我的文件。但是,我并不总是希望看到整个数据库。

数据库的开头由# Make data base, printed on表示,停靠在# Finished Make data base

我知道我可以创建一个脚本,在构建完成后执行此操作 - 也许我应该这样做 - 但是有没有办法用sed做到这一点?

make all --print-data-base 2>&1 | tee build-with-data-base.err | sed **something** | tee build-with-no-data-base.err

我在这里看到的问题是涉及到状态:当您点击数据库部分的开头时,关闭流,当您点击结束时,您将重新打开流。

是否可以使用sed执行此操作,还是应该使用脚本执行此操作?

1 个答案:

答案 0 :(得分:1)

使用GNU sed,您可以使用其开头和结尾由echo "a b c d e f" | sed '/b/,/e/d' # delete the lines from b to e a f 描述的范围:

sed

在您的情况下,您可以使用以下sed '/# Make data base, printed on/,/# Finished Make data base/d' 命令:

dfs = [data1516, data1617, data1718]
df = pd.concat([x.rename(columns={"Employer: ID" : "EID"}) for x in dfs], axis=1)