Как присоединиться к файлу символов по линии, уважая пустые строки, используя во время скрипта оболочки?

Файл INPUT.TXT содержит:

*
*
*
 
 
H 
E 
L 
L 
O 
 
W
O
R
L
D
 
 
*
*
*

Мой код считывает каждый символ по строке:

while read -n1 c; do
     dest+="${c}"
done < input.txt

echo $dest

Результат:

***HELLOWORLD***

Я хочу это :

*** Hello World ***

0
задан 5 February 2021 в 04:37

2 ответа

Я предполагаю, что вы используете оболочку Bash из-за параметра -N1 , что не является частью POSIX SH Standard Отказ

Если вы бросили -N1 , то чтение присваивает значение C только на непустых линиях. Затем вы можете использовать расширение параметра формы

   ${parameter:-word}
          Use  Default  Values.  If parameter is unset or null, the expan‐
          sion of word is substituted.  Otherwise, the value of  parameter
          is substituted.

, чтобы назначить значение по умолчанию пространства , когда C пуст. Таким образом,

#!/bin/bash

while read c; do
    dest+=${c:- }
done < input.txt

echo "$dest"

Обратите внимание, что переменные экспансии не нужно цитироваться на RHS на назначении - но должны быть указаны в команде Echo English $ DEST будет предметом -Помощь и генерация файла и имена файла («Globbing») на оболочке - особенно важно, когда переменная может содержать * символов.

Затем дано

$ cat input.txt
*
*
*


H
E
L
L
O

W
O
R
L
D


*
*
*

Вы должны получить

$ ./myscript
***  HELLO WORLD  ***
1
ответ дан 18 March 2021 в 23:37

Технически Да, но есть некоторые важные предостережения, о которых вы должны знать:

Если вы поделитесь любым разделы между Windows и Ubuntu, то любой пишет , что Вы вступаете в раздел Windows, пока он находится в состоянии выключения «быстрого запуска», может привести к потере данных, поскольку раздел не находится в состоянии «чистое», когда компьютер включен в этот режим.

Однако, если Ubuntu настроен только для чтения из раздела NTFS, то существует меньше риска потери данных или повреждения. Это может быть настроено в файле / etc / fstab , установив раздел NTFS с помощью параметра RO .

Вы можете узнать больше о вариантов Mount через Руководство Если вы хотите поделиться разделами между двумя операционными системами

0
ответ дан 18 March 2021 в 23:37

Другие вопросы по тегам:

Похожие вопросы: