Создать программу сценария оболочки Linux, которая сортирует цифры и слова в файле? - PullRequest
0 голосов
/ 12 мая 2018

Мне нужно создать программу сценария оболочки Linux, которая читает текстовый файл (до EOF) и выполняет следующие действия:

  • определяет, содержит ли каждая строка слово или число
  • ведет подсчет количества найденных слов
  • добавить каждое найденное слово в текстовый файл (например, wordsfile.txt)
  • добавить каждое найденное число в текстовый файл (например, numbersfile.txt)
  • возвращает всю следующую информацию

Текстовый файл, который я хочу, чтобы программа прочитала, выглядит следующим образом:

123
apple
456
boy
789

И я хочу, чтобы вывод был следующим:

2 WORDS, 3 NUMBERS

Кроме того, я хочу, чтобы в файле wordsfile.txt читалось:

apple
boy

и numbersfile.txt следующего содержания:

123
456
789

Это мой код:

#!bin/bash
wordcount=0
numbercount=0
while read line; dp
  for word in $line; do
    $wordcount = $wordcount + 1
    echo word >> /words/wordsfile.txt
  done
  for number in $line; do
    $numbercount = $numbercount + 1
    echo number >> /numbers/numbersfile.txt
  done
  echo $wordcount " WORDS, " $numberscount " NUMBERS"
done

И вот что я получаю:

./assignment6.sh < assignment6file.txt
./assignment6.sh: line 5: 0: command not found
./assignment6.sh: line 6: /words/wordfile.txt: No such file or directory
./assignment6.sh: line 9: 0: command not found
./assignment6.sh: line 10: /numbers/numbersfile.txt: No such file or directory
0  words,  0  numbers
./assignment6.sh: line 5: 0: command not found
./assignment6.sh: line 6: /words/wordfile.txt: No such file or directory
./assignment6.sh: line 9: 0: command not found
./assignment6.sh: line 10: /numbers/numbersfile.txt: No such file or directory
0  words,  0  numbers
./assignment6.sh: line 5: 0: command not found
./assignment6.sh: line 6: /words/wordfile.txt: No such file or directory
./assignment6.sh: line 9: 0: command not found
./assignment6.sh: line 10: /numbers/numbersfile.txt: No such file or directory
0  words,  0  numbers
./assignment6.sh: line 5: 0: command not found
./assignment6.sh: line 6: /words/wordfile.txt: No such file or directory
./assignment6.sh: line 9: 0: command not found
./assignment6.sh: line 10: /numbers/numbersfile.txt: No such file or directory
0  words,  0  numbers
./assignment6.sh: line 5: 0: command not found
./assignment6.sh: line 6: /words/wordfile.txt: No such file or directory
./assignment6.sh: line 9: 0: command not found
./assignment6.sh: line 10: /numbers/numbersfile.txt: No such file or directory
0  words,  0  numbers

Я не понимаю, почему мой код не работает. Пожалуйста, помогите.

1 Ответ

0 голосов
/ 12 мая 2018

В Linux есть все эти аккуратные утилиты для сопоставления цифр и слов и их подсчета.Не нужно изобретать велосипед.

wf=wordsfile.txt
nf=numbersfile.txt
egrep -i '^[a-z]+$' $1 > $wf
egrep '^[0-9.]+$' $1 > $nf
W=`wc -l $wf`
N=`wc -l $nf`
echo $W WORDS, $N NUMBERS

Сохраните как скрипт, затем запустите так:

./my-script file-to-read
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...