如何在shell脚本中使用sed或grep检查空白字符?

时间:2018-04-05 07:36:29

标签: linux bash shell

我试过这个,但它不起作用。

if [ $char -eq " " -o $char -eq "" -o $char -eq "   " ]

4 个答案:

答案 0 :(得分:1)

这适用于单个char变量$ char,但请注意,该帖子主要假定一个多字符变量。

使用:

if grep -q '\s' <<< "$char"; then ...

答案 1 :(得分:1)

-eq用于数字。此外,您应该将变量括在引号中,例如&#34; $ char&#34;,而不是$ char

#! /bin/sh

A=1
B=" "

if [ "$A" -eq 1 ]; then
    echo "eq is for numeric"
fi

if [ "$B" = " " ]; then
    echo "= is for characters"
fi

答案 2 :(得分:0)

-eq表示数值,对于字符串,请使用==

if [[ $char == " " || -z $char || $char == "   " ]]; then
  • -z equivalent“”
  • ||相当于-o

使用最近bash(0或1个空格或3个空格)的正则表达式替换:

if [[ $char =~ ^\ {0,1}$ || $char =~ ^\ {3}$ ]] ; then
  • \:仅限空格
  • [[:blank:]]:space,tab
  • [[:space:]]:空格,制表符,换行符,垂直制表符,换页符,回车款
  • 如果您想匹配0到3个空格:if [[ $char =~ ^\ {0,3}$ ]] ; then

答案 3 :(得分:0)

在bash中,您可以在[[]]

中使用正则表达式匹配
if  [[ $char =~ [[:space:]] ]]

如果您确实想要匹配单个空格字符

if  [[ $char =~ ^[[:space:]]$ ]]

或单个空格或无空白

if  [[ $char =~ ^[[:space:]]?$ ]]

或只是字符串中的空格

if  [[ $char =~ ^[[:space:]]+$ ]]

或者只有空格或什么都没有

if  [[ $char =~ ^[[:space:]]*$ ]]