Jam*_*man 5 bash perl grep sed
说我有这样的文件:
+jaklfjdskalfjkdsaj
fkldsjafkljdkaljfsd
-jslakflkdsalfkdls;
+sdjafkdjsakfjdskal
Run Code Online (Sandbox Code Playgroud)
我只想查找并计算在此文件中开始-的行后面紧跟一行开头的次数+.
规则:
例如,我可以弄清楚如何在Python脚本中执行此操作,但我从来没有在Bash中做过这么广泛的事情.
任何人都可以帮我吗?我认为它最终会成为grep,perl或者也许是一个有才能的sed线 - 但这些是我仍在学习的东西.
谢谢你们!
grep -A1 "^-" $file | grep "^+" | wc -l
第一个grep查找所有以#开头的行-,并-A1使其也在匹配后输出该行.
然后我们将grep输出为任何以#开头的行+.从逻辑上讲:
-XXX行和以下行+xxx线也不能是一条-xxx线因此,任何+xxx行必须跟随行,并且应该计算,我们这样做wc -l
易于使用Perl:
perl -lne '$c++ if $p and /^\+/; $p = /^-/ }{ print $c' FILE
Run Code Online (Sandbox Code Playgroud)