簡體   English   中英

Bash Shell腳本檢查器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM