Итак, мне нужно написать сценарий bash, чтобы проверить, действительно ли решение 9x9 «судоку», но упрощение состоит в том, что мне не нужно разделить его на 3x3, но просто проверьте, не строятся ли строки и столбцы содержат повторяющиеся числа, и действительные числа только 1-9 ..Bash simplified sudoku
это то, что я имел в виду, но не мог заставить его работать:
#!/bin/bash
error="false"
count=0
#this would be for columns
#for i in 1 2 3 4 5 6 7 8 9
#do
#cat sudoku.txt | awk -F "\t" '{ print $'$i'}' | uniq -c | awk '$1 > 1 { count++ } END { print count }'
#done
#and this would be for rows
for i in 1 2 3 4 5 6 7 8 9
do
cat sudoku.txt | awk '{ print FNR=$'$i'}' | uniq -c |
awk '$1 > 1 { count++ } END { print count }' |
awk ' count > 0 { $error="true" } END { print $i }' |
awk '{ if ($error = "true") print "Wrong data!"; else print "Correct data!"; } '
done
где задано значение для '$ hiba'? Пожалуйста, не оставляйте прокомментированный код в своем вопросе, ИЛИ поставите 2 решения, которые вы пробовали, и объясните разницу. Удачи. – shellter
ugh, полностью забыл изменить его, $ hiba должен быть $ error>. <, А затем вторая строка должна быть error = "false", но я забыл изменить ее, и на самом деле это не 2 решения, а прокомментированные что я попытался определить, имеют ли столбцы дубликаты, а остальное - то же самое, но для строк, по-видимому, нет, если они работают правильно :( edit: fixed – user1480354
где установлена '$ error'? Также vars in awk не используйте ведущий символ '$', за исключением $ 0, - $ 999 ... Удача. – shellter