使用 shell 命令过滤以下文本

使用 shell 命令过滤以下文本

我可以使用git diff命令获取文件差异,并将其过滤如下:

- 该文件夹包含常用的数据库脚本。

+该文件夹包含常用的数据库脚本。

+

+

+

+添加新行。

但是我希望能够只得到差异,即New Line added.我怎样才能实现这一点 - 请注意,这里我想删除一对包含的行

'+This folder contains common database scripts.'

'-This folder contains common database scripts.' 并删除空格(三个“+”行)

答案1

尝试这个:

如果+New Line added.是输出的最后一行git diff

git diff | tail -1 | tr -d '\n'

如果你想摆脱+

git diff | tail -1 | sed -e 's/^+//' | tr -d '\n'

答案2

使用正则表达式;

echo "-This folder contains common database scripts.
+This folder contains common database scripts.
+
+
+
+New Line added" \
| grep -Pv "^[+-]$" \
| perl -p0e 's/-.*(.{9}).*\n\+.*\1.*//g'

在线尝试 http://tpcg.io/hb9xSY

相关内容