Bash正则表达式为空行

时间:2017-04-10 17:01:18

标签: regex bash unix ascii

我需要一个正则表达式来匹配我们只有1个 \ n 不可打印的ASCII字符的行,所以:

[[$ line = ~REGEX]]

请帮忙。该字符的ASCII代码为 (0x0A) ,我知道它应该类似于:^(0x0A)$但我无法使其工作。

修改

我的代码是:

while IFS= read -r line; do
    [[ $line =~ REGEX ]] && printf "SUCCESS"
done < file

编辑 - 这是文件,有更多的代码,但我把它剪掉了

enter image description here

档案:https://ufile.io/88965

1 个答案:

答案 0 :(得分:2)

您的f=open(location+'abcd.txt') data={} i=0 for line in f: data[i]=line i+=1 for i in range(0,len(data)): a=data[i] start=0 end=len(a) for j in range(0,len(a)): if a[j]=='[': start=j elif a[j]==']': end=j print a[end+1:] 循环正在读取您的文件,直到找到换行符,然后将其到目前为止读取的内容分配给while read,丢弃换行符。

因此,您应该能够检测到这样的空行:

line

如果您确实想使用正则表达式,可以按照评论中其他人的建议使用while IFS= read -r line; do [[ -z $line ]] && printf "SUCCESS\n" done < file

如果您的目标是在线条与图案匹配时生成某种输出,则应使用专为此目的设计的工具,例如awk:

^$

由于您似乎遇到了Windows样式的换行问题,因此可以使用awk '/^$/ { print "SUCCESS" }' file 或其他工具将其转换为UNIX样式换行符。