如何使用grep命令确定字符串是否包含换行符?

时间:2012-11-11 21:13:37

标签: shell unix scripting grep

假设我们有变量“test”,其中包含换行符,例如\n。如果我使用以下命令:

echo "$test" | grep '\n'

结果不是我所期望的。上面的grep命令只搜索测试字符串是否包含字符'n'而不是换行符,因为'\''转义'n'字符。

如何编写grep命令来搜索特定字符串中的换行符? 仅供参考,以下情况也不对。

echo "$test" | grep '^.*$'

1 个答案:

答案 0 :(得分:7)

通过使用grep的-c选项来计算与此匹配的行。请注意,$字符与不是\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来计算文件(或变量/标准输出)中的characterswords {分别为{1}}和wc -m


如何使用wc -wtr替换为变量中未包含的唯一字符,例如:

\n

然后,您可以echo "$test" | tr '\n' '_' one_two_three_ 替换被替换的字符,在本例中为grep


甚至使用_

cat -E

cat echo "$test" | cat -E one$ two$ three$ -E在每行末尾显示--show-ends