假设我们有一个包含换行符的变量“test”,例如,\n
. 如果我使用以下命令:
echo "$test" | grep '\n'
结果不是我所期望的。上面的grep
命令只搜索测试字符串是否包含字符 'n' 而不是换行符,因为 '\' 转义了 'n' 字符。
我应该如何编写 grep 命令来搜索特定字符串中的换行符?仅供参考,以下内容也不正确。
echo "$test" | grep '^.*$'
通过使用-c
grep 的选项来计算匹配的行数可以实现。请注意,$
字符匹配行尾\n
也不会看到双引号$test
对保留换行符的重要性。
test="one
two
three"
echo $test | grep -c '$'
1
echo "$test" | grep -c '$'
3
您还可以使用该选项针对^
行首或.*
任何内容进行测试,或者在您的问题中测试整行。^.*$
-c
如何wc
测试多行变量。wc -l
打印换行数:
echo "$test" | wc -l
3
您还可以分别newlines
使用和在文件(或变量/标准输出)中wc
计数和。 characters
words
wc -m
wc -w
或者如何使用不包含在变量中的唯一字符tr
替换\n
,例如:
echo "$test" | tr '\n' '_'
one_two_three_
然后你可以grep
为被替换的字符,在这种情况下_
甚至使用cat -E
echo "$test" | cat -E
one$
two$
three$
cat-E
或--show-ends
显示$
在每行的末尾。