我有一个包含各种信息的文件。这些字段由|分隔。其中一个字段包含一个目录。例如:
blah|blah|blah|/usr/local/etc/|blah|blah
我需要验证路径字段不以“/”结尾。我正在使用ksh。有什么建议吗?
感谢。
答案 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“/ |”通过“|” (这两次测试都成功发生时)