如何验证数据是否有尾随" /"

时间:2013-10-16 18:43:00

标签: shell scripting ksh

我有一个包含各种信息的文件。这些字段由|分隔。其中一个字段包含一个目录。例如:

blah|blah|blah|/usr/local/etc/|blah|blah

我需要验证路径字段不以“/”结尾。我正在使用ksh。有什么建议吗?

感谢。

4 个答案:

答案 0 :(得分:2)

假设目录始终位于第4个字段

line=0
while IFS='|' read -rA fields; do
    let line++
    [[ ${fields[3]} == */ ]] && echo line $line: ends with a slash
done < filename

答案 1 :(得分:0)

不是ksh,但这是awk的自然工作:

awk -F\| '$4 ~ /\/$/ {
    print "Trailing slash in line "NR":", $4
}' ${file:?}

答案 2 :(得分:0)

试试这个:

if [ line ~= '(/\w+)+(\||$)' ]

我的shell语法生锈了,所以这可能需要一点按摩到形状

答案 3 :(得分:0)

不要忘记像/(root)这样的特殊路径 我将/(root)保留在

下面的代码中
echo "blah|blah|blah|/usr/local/etc/|blah|blah|
blah|blah|blah|/|blah|blah
blah|blah|blah|.|blah|blah
blah|blah|blah|/usr/local/etc|blah|blah" \
sed "
  /\/\|/ {
    /\|\/\|/ !s/\/|/|/
    }"

的解释: // \ | /对待一行“/ |”出现 // \ | /!对待行“| / |”没有出现(这里是先前测试发生的情况) s // | / | / replace“/ |”通过“|” (这两次测试都成功发生时)