我有一個包含各種信息的文件。這些字段由|分隔。其中一個字段包含一個目錄。例如:如何驗證數據是否有尾隨「/」
blah|blah|blah|/usr/local/etc/|blah|blah
我需要驗證路徑字段不以「/」結尾。我正在使用ksh。有什麼建議麼?
謝謝。
我有一個包含各種信息的文件。這些字段由|分隔。其中一個字段包含一個目錄。例如:如何驗證數據是否有尾隨「/」
blah|blah|blah|/usr/local/etc/|blah|blah
我需要驗證路徑字段不以「/」結尾。我正在使用ksh。有什麼建議麼?
謝謝。
假定目錄永遠是在第4場
line=0
while IFS='|' read -rA fields; do
let line++
[[ ${fields[3]} == */ ]] && echo line $line: ends with a slash
done < filename
不是的ksh,但這是awk
自然的工作:
awk -F\| '$4 ~ /\/$/ {
print "Trailing slash in line "NR":", $4
}' ${file:?}
試試這個:
if [ line ~= '(/\w+)+(\||$)' ]
我shell語法是生鏽的,所以這可能需要一點點按摩成形
,不要忘記買/(根),特殊的路徑 我把/(根)在下面的代碼
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 // |/| /替換「/ |」通過「|」 (這裏當兩個測試都成功發生時)