[英]Bash shell script checker
我必須編寫一個腳本,該腳本將獲取一個包含9行和9行(1-9)的文本文件。 例如:
123456789
234567891
345678912
456789123
567891234
678912345
789123456
891234567
912345678
我必須根據數獨規則檢查行和行。 一行或一行不能相同。 因此,該示例是正確的解決方案。
如何在bash shell腳本中編寫它? 我不能使用數組,該怎么辦?
沒有awk的解決方案,結合了其他不同的工具。
編輯:此解決方案適用於稱為輸入和數字之間的空格的輸入文件。 查看有關更改此行為的評論。
echo "Checking 9 lines"
if [ $(wc -l <input ) -ne 9 ]; then
echo "Wrong number of lines"
exit 1
fi
echo "Check for correct layout"
if [ $(grep -cv '^[1-9] [1-9] [1-9] [1-9] [1-9] [1-9] [1-9] [1-9] [1-9]$' input ) -ne 0 ]; then
echo "Not all lines are correct, maybe spaces at the end of a line?"
grep -v '^[1-9] [1-9] [1-9] [1-9] [1-9] [1-9] [1-9] [1-9] [1-9]$' input
exit 1
fi
i=0
while read -r line; do
((i++))
if [ $(echo "${line}" | tr " " "\n" | sort -u | wc -l ) -ne 9 ]; then
echo "Wrong nr of unique numbers in row $i"
fi
done <input
for j in {1..9}; do
if [ $(cut -d" " -f${j} input | sort -u | wc -l ) -ne 9 ]; then
echo "Wrong nr of unique numbers in column $j"
fi
done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.