假设我们有一个包含换行符的变量“test”,例如,\n. 如果我使用以下命令:
echo "$test" | grep '\n'
结果不是我所期望的。上面的grep命令只搜索测试字符串是否包含字符 'n' 而不是换行符,因为 '\' 转义了 'n' 字符。
我应该如何编写 grep 命令来搜索特定字符串中的换行符?仅供参考,以下内容也不正确。
echo "$test" | grep '^.*$'
通过使用-cgrep 的选项来计算匹配的行数可以实现。请注意,$字符匹配行尾\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计数和。 characterswordswc -mwc -w
或者如何使用不包含在变量中的唯一字符tr替换\n,例如:
echo "$test" | tr '\n' '_'
one_two_three_
然后你可以grep为被替换的字符,在这种情况下_
甚至使用cat -E
echo "$test" | cat -E
one$
two$
three$
cat-E或--show-ends显示$在每行的末尾。