-88 / 55 / 9
Регистрация: 29.09.2011
Сообщений: 594
1

Найти строчки, состоящие только из белых символов

31.05.2015, 03:38. Показов 753. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем пишу скрипт, надо при чиении файла пропустить все пустые строчки, т.е. такие, которые состоят только из белых символов.
что - то типа того:
Bash
1
2
3
4
5
6
7
 cat $file | while read line
 do
  if [ "\$line" = "\n" ]
  then
   echo "0"
  fi
 done
Добавлено через 1 час 40 минут
Ещё не могу понять, как сравнивать строчки. Пытаюсь вот так:
Bash
1
2
3
4
5
6
7
 while read line
 do
  if [ "\$line" == "constants\n" ]
  then
   echo $line
  fi
 done < $file
И в файле точно есть строка constants, испробывал все варианты, но не получется её отловить.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2015, 03:38
Ответы с готовыми решениями:

Найти слово, состоящие только из различных символов
Добрый День/Вечер. Помогите пожалуйста: В консоле ввести несколько слов(не больше 10). Найти...

За один просмотр символов строки найти все самые длинные слова, состоящие только из различных букв и занести их в новую строку, разделяя пробелом
Не получается решить задачу на строки, не совсем понимаю алгоритм действий. Задание: Словом в...

Группы символов, состоящие только из латинских букв, если последняя буква группы входит в нее еще только один раз.
условие: - Написать программу, которая читает с клавиатуры произвольную строку символов,...

Вывести группы символов, состоящие только из латинских букв,
условие - Написать программу, которая читает с клавиатуры произвольную строку символов,...

3
Эксперт NIX
2793 / 2036 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
31.05.2015, 11:00 2
  1. Можно убрать пустые строки на этапе чтения
    Bash
    1
    
    while do ... done < <(grep -v '^\s*$' $file)
  2. Зачем Вы экранирование делаете для \$line? Для проверки можно использовать тот факт что пробелы используются как разделитель и read|echo|… их убирают по умолчанию
    Bash
    1
    
    if [ "$line" ]
1
-88 / 55 / 9
Регистрация: 29.09.2011
Сообщений: 594
31.05.2015, 14:34  [ТС] 3
Цитата Сообщение от Marinero Посмотреть сообщение
Зачем Вы экранирование делаете для \$line?
Где - то нашёл такой пример.
В
Bash
1
while do ... done < <(grep -v '^\s*$' $file)
греп куда строчку вернёт? Надо прочитать файл и за исключением некоторых строчек перенести в другой.
И почему между '< <' пробел стоит, это важно?

Добавлено через 13 минут
Вот здесь я взял пример с экранированием:http://linuxgeeks.ru/bash-2.htm

Добавлено через 21 минуту
Есть ли какие - нибудь лаконичные правила обязательных пробелов и обязательного их отцутствия?
например почему вот так не работает:
Bash
1
  if [ !"$line" ]
И интерпретатор не сообщает об ошибке?

Тоже почему с экранированием не работает:
Bash
1
  if [ -z "\$line" ]
Добавлено через 3 минуты
Действительно, ниего не получалось из - за экранирования. Кто - нибудь может объяснить, почему по ссылке выше именно так написали?
0
Эксперт NIX
2793 / 2036 / 682
Регистрация: 02.03.2015
Сообщений: 6,509
31.05.2015, 16:25 4
Цитата Сообщение от _20_ Посмотреть сообщение
Кто - нибудь может объяснить, почему по ссылке выше именно так написали?
Почему кто-то стоит на голове или поступает каким-то образом? Иногда не знает даже тот человек, который это делает
Знак $ обозначает раскрытие переменной, параметра или замену команды, экранированный же знак \$ обозначает сам себя.
Цитата Сообщение от _20_ Посмотреть сообщение
Есть ли какие - нибудь лаконичные правила обязательных пробелов и обязательного их отцутствия?
Пробелы(как и другие пробельные символы) используются для разделения слов, команд, параметров ... в общем всего, что надо отделить друг от друга. (по-умолчанию это параметр окружения $IFS). Исходя из этого !"$line" это строка символов начинающаяся с символа ! и дальше то, что было записано в переменной line. Если включено раскрытие истории команд, то возможно эта строка заменится на подходящую команду из истории команд, но в любом случае это не пусто => true(истина). А если Вам было надо использовать ! как знак отрицания — его надо писать отдельно: if ! [ "$line" ]
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2015, 16:25
Помогаю со студенческими работами здесь

Найти в строке слова, состоящие только из букв и только из цифр
Помогите новичку, прошу. УСЛОВИЕ: Вводят строку слов. Необходимо найти слова, состоящие только из...

В введенной строке символов найти пары состоящие из одинаковых символов и заменить второй из них цифрой 1
В введенной строке символов найти пары состоящие из одинаковых символов и заменить второй из них...

Во введенной строке символов найти пары, состоящие из одинаковых символов и заменить второй из них цифрой «1»
Во введенной строке символов найти пары, состоящие из одинаковых символов и заменить второй из них...

Строка: выведите на экран только слова, состоящие более чем из 5 символов
Здраствуйте, помогите пожалуства с моим заданием. Создайте переменную String, в которой сохраните...

Напечатать группы символов, состоящие только из цифр, если цифры расположены по возрастанию
Напечатать группы символов, состоящие только из цифр, если цифры расположены по возрастанию....

Вывести группы символов, состоящие только из цифр, если цифры расположены по возрастанию
Эксперты помогите решить задачу - Написать программу, которая читает с клавиатуры произвольную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru