On 16.03.24 02:49, Taylor Blau wrote:
On Fri, Mar 15, 2024 at 08:46:13PM +0100, Beat Bolli wrote:
Signed-off-by: Beat Bolli <dev+git@xxxxxxxxx>
---
t/t3920-crlf-messages.sh | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/t/t3920-crlf-messages.sh b/t/t3920-crlf-messages.sh
index 5eed640a6825..50ae222f0842 100755
--- a/t/t3920-crlf-messages.sh
+++ b/t/t3920-crlf-messages.sh
@@ -97,7 +97,7 @@ test_expect_success 'branch: --verbose works with messages using CRLF' '
git branch -v >tmp &&
# Remove first two columns, and the line for the currently checked out branch
current=$(git branch --show-current) &&
- grep -v $current <tmp | awk "{\$1=\$2=\"\"}1" >actual &&
+ awk "/$current/ { next } { \$1 = \$2 = \"\" } 1" <tmp >actual &&
I think that using `next` here is fine to ignore lines that match
`$current`, but the canonical approach would probably be using the
`!` operator instead to negate the match, like so:
awk "!/$current/ { \$1 = \$2 = \"\" } 1" <tmp >actual &&
Not worth a reroll, of course, just something that I noticed while
reading.
Except it's not the same :-) This was actually my first try, but then I
realized that awk continues to evaluate patterns and actions until the
end of the script. The "1" at the end is the "always true" pattern that
causes the default action "print $0" to run.
So the "next" is needed to discard the current line.
Having said this,
awk "!/$current/ { \$1 = \$2 = \"\"; print \$0 }" <tmp >actual &&
would work, and it would also remove the obscure flow detailed above.
Regards, Beat