@David_138

Как заменить пустую строку на любое слово в файле?

Всем привет. Решил попробовать создать свою программку, учусь обрабатывать и сортировать файлы.
Вот над каким файлом я сейчас работаю:
$ cat text1.txt 
	Учимся обрабатывать и сортировать данные из файла

	Это заголовок статьи
Это обычный текст
	Это список 
	Это список
	Это список
	Это список
Это обычный текст
	Это список 
	Это список
	Это список
	Это список
Это обычный текст
	Это список 
	Это список
	Это список
	Это список	
Это обычный текст
	Это фотография
Это обычный текст
	Это фотография
	Это список
Это обычный текст
	Это код 
	Это фотография
Это обычный текст
	Это список 
	Это список
	Это список
	Это список	


	Это заголовок статьи
Это обычный текст
	Это список 
	Это список
	Это список
	Это список
Это обычный текст
	Это список 
	Это список
	Это список
	Это список
Это обычный текст
	Это список 
	Это список
	Это список
	Это список	
Это обычный текст
	Это фотография
Это обычный текст
	Это фотография
	Это список
Это обычный текст
	Это код 
	Это фотография
Это обычный текст
	Это список 
	Это список
	Это список
	Это список

	Это заголовок статьи
Это обычный текст
	Это список 
	Это список
	Это список
	Это список
Это обычный текст
	Это список 
	Это список
	Это список
	Это список
Это обычный текст
	Это список 
	Это список
	Это список
	Это список	
Это обычный текст
	Это фотография
Это обычный текст
	Это фотография
	Это список
Это обычный текст
	Это код 
	Это фотография
Это обычный текст
	Это список 
	Это список
	Это список
	Это список

	Это заголовок статьи
Это обычный текст
	Это список 
	Это список
	Это список
	Это список
Это обычный текст
	Это список 
	Это список
	Это список
	Это список
Это обычный текст
	Это список 
	Это список
	Это список
	Это список	
Это обычный текст
	Это фотография
Это обычный текст
	Это фотография
	Это список
Это обычный текст
	Это код 
	Это фотография
Это обычный текст
	Это список 
	Это список
	Это список
	Это список

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

	Это заголовок статьи

Тут пустая строка, и вместо нее хочу написать например такой текст:
Это список
        Абракадарбра
	Это заголовок статьи

И как мне можно вместо таба " " тоже написать текст какой нибудь?
У меня такой код и результат получился:
$ vim script1.sh
$ cat script1.sh 
#!/bin/bash
#file="text1.txt"
#IFS=$'\n' # with line
#for line in $(cat $file)
#do
#	if [[ "$line" == *"	"* ]]; then
#		echo "<p>$line"
#	else
#		echo "$line"
#	fi
#done

index=0
while read line; do
	array[$index]="$line"
	index=$(($index+1))
done < text1.txt
for ((numb=0; numb < ${#array[*]}; numb++))
do
    	echo "$numb: ${array[$numb]}"
done
$ ./script1.sh
0: Учимся обрабатывать и сортировать данные из файла
1: 
2: Это заголовок статьи
3: Это обычный текст
4: Это список
5: Это список
6: Это список
7: Это список
8: Это обычный текст
9: Это список
10: Это список
11: Это список
12: Это список
13: Это обычный текст
14: Это список
15: Это список
16: Это список
17: Это список
18: Это обычный текст
19: Это фотография
20: Это обычный текст
21: Это фотография
22: Это список
23: Это обычный текст
24: Это код
25: Это фотография
26: Это обычный текст
27: Это список
28: Это список
29: Это список
30: Это список
31: 
32: 
33: Это заголовок статьи
34: Это обычный текст
35: Это список
36: Это список
37: Это список
38: Это список
39: Это обычный текст
40: Это список
41: Это список
42: Это список
43: Это список
44: Это обычный текст
45: Это список
46: Это список
47: Это список
48: Это список
49: Это обычный текст
50: Это фотография
51: Это обычный текст
52: Это фотография
53: Это список
54: Это обычный текст
55: Это код
56: Это фотография
57: Это обычный текст
58: Это список
59: Это список
60: Это список
61: Это список
62: 
63: Это заголовок статьи
64: Это обычный текст
65: Это список
66: Это список
67: Это список
68: Это список
69: Это обычный текст
70: Это список
71: Это список
72: Это список
73: Это список
74: Это обычный текст
75: Это список
76: Это список
77: Это список
78: Это список
79: Это обычный текст
80: Это фотография
81: Это обычный текст
82: Это фотография
83: Это список
84: Это обычный текст
85: Это код
86: Это фотография
87: Это обычный текст
88: Это список
89: Это список
90: Это список
91: Это список
92: 
93: Это заголовок статьи
94: Это обычный текст
95: Это список
96: Это список
97: Это список
98: Это список
99: Это обычный текст
100: Это список
101: Это список
102: Это список
103: Это список
104: Это обычный текст
105: Это список
106: Это список
107: Это список
108: Это список
109: Это обычный текст
110: Это фотография
111: Это обычный текст
112: Это фотография
113: Это список
114: Это обычный текст
115: Это код
116: Это фотография
117: Это обычный текст
118: Это список
119: Это список
120: Это список
  • Вопрос задан
  • 72 просмотра
Пригласить эксперта
Ответы на вопрос 2
hint000
@hint000
у админа три руки
Ваша "пустая строка" - это два перевода строки подряд. Типа "\n\n" (но может быть и некоторое количество пробелов или табов между переводами строк, в том плане, что визуально не отличить в некоторых случаях).
Надо менять "\n\n" на "\nАбракадарбра\n"
Можно сначала потренироваться с такой заменой в любом текстовом редакторе.
Ответ написан
Комментировать
@rPman
bash не очень удобный язык, точнее на любой чих предлагается/удобнее использовать стороннюю утилиту, например утилиты по обработке текста это sed или awk

настоятельно рекомендую работать со своим любимым и удобным языком программирования

p.s. твоя задача решается простой регуляркой с помощью утилиты sed
sed -i 's/^[[:blank:]]*$/Абракадабра/' имя_файла
команда перезапишет файл

тут в ковычках показано regexp выражение с командой найти и заменить (s/что найти/на что заменить/)
регулярные выражения это целый мир по анализу текста, советую изучать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы