我在二进制模式下从Windows复制一个CSV文件到Linux。 在bash中,我想validation内容,使用像字母数字和特殊字符的特定字符集。
re='^[-a-zA-Z0-9. ,\/()&_]*$' if [[ ! $line =~ $re ]] then echo "Found undefined character in :$line" break fi
发送一行…
ABCD EFG, ABCD EFG, ABCD EFG
regx不承认空间。 因为它是在二进制模式下从窗口复制的。 当我给他们的Linux空间。 雷克斯认为它是一个空间。
如何处理这个? 我无法将传输模式更改为ascii。
为了在输入结束时允许可选的\r
(DOS行结束),可以使用这个正则表达式:
re=$'^[-a-zA-Z0-9. ,/()&_]+\r?$'
现在测试一下:
line=$'ABCD EFG, ABCD EFG, ABCD EFG\r' [[ $line =~ $re ]] && echo "valid" || echo "invalid"
输出:
valid