用于检查二进制传输的 ASCII 的正则表达式 space In Bash
Regex for checking binary transferred ASCII space In Bash
我正在以二进制模式将一个 csv 文件从 windows 复制到 linux。
在 bash 中,我想验证内容,使用特定字符集,如字母数字和一些特殊字符。
re='^[-a-zA-Z0-9. ,\/()&_]*$'
if [[ ! $line =~ $re ]]
then
echo "Found undefined character in :$line"
break
fi
关于发送线路...
ABCD EFG, ABCD EFG, ABCD EFG
regx 无法识别 space。因为它是从 windows 以二进制模式复制的。
我给他们 linux space 的那一刻。 regx 将其识别为 space.
如何处理?
我无法将传输模式更改为ascii。
要在输入的末尾允许可选的 \r
(DOS 行结束),您可以使用此正则表达式:
re=$'^[-a-zA-Z0-9. ,/()&_]+\r?$'
现在测试一下:
line=$'ABCD EFG, ABCD EFG, ABCD EFG\r'
[[ $line =~ $re ]] && echo "valid" || echo "invalid"
输出:
valid
我正在以二进制模式将一个 csv 文件从 windows 复制到 linux。 在 bash 中,我想验证内容,使用特定字符集,如字母数字和一些特殊字符。
re='^[-a-zA-Z0-9. ,\/()&_]*$'
if [[ ! $line =~ $re ]]
then
echo "Found undefined character in :$line"
break
fi
关于发送线路...
ABCD EFG, ABCD EFG, ABCD EFG
regx 无法识别 space。因为它是从 windows 以二进制模式复制的。 我给他们 linux space 的那一刻。 regx 将其识别为 space.
如何处理? 我无法将传输模式更改为ascii。
要在输入的末尾允许可选的 \r
(DOS 行结束),您可以使用此正则表达式:
re=$'^[-a-zA-Z0-9. ,/()&_]+\r?$'
现在测试一下:
line=$'ABCD EFG, ABCD EFG, ABCD EFG\r'
[[ $line =~ $re ]] && echo "valid" || echo "invalid"
输出:
valid