Unix Shell komut dosyasında dosyayı satır satır (boşluklu) okuma - Sorun

Unix kabuk betiğinde bir dosyayı satır satır okumak istiyorum. Satır baştaki ve sondaki boşlukları içerebilir ve ben bu boşlukları da satırda okumak istiyorum. Satırı okurken "while read line" ile denedim ancak read komutu satırdaki boşluk karakterlerini kaldırıyor :( Dosyadaki satırlara örnek: -

abcd efghijk
 abcdefg hijk

satırı şu şekilde okunmalıdır:- 1) "abcd efghijk" 2) " abcdefg hijk"

Denediğim şey şuydu (işe yaramadı):-

while read line
do
   echo $line
done < file.txt

İçinde boşluk ve tab karakterleri olan bir satır istiyorum. Lütfen bir yol önerin.

Çözüm

Bunu dene,

IFS=''
while read line
do
echo $line
done < file.txt

EDIT:

Man bash'ten

IFS - The Internal Field Separator that is used for word
splitting after expansion and to split lines into words
with  the  read  builtin  command. The default value is
``''
Yorumlar (2)

Girdideki ters eğik çizgilerle ilgili sorunları önlemek için raw satırları okumak istersiniz (-r kullanın):

while read -r line; do
   printf "\n" "$line"
done < file.txt

Bu, satır içindeki boşlukları korur, ancak baştaki ve sondaki boşlukları kaldırır. Bunları da tutmak için, IFS'yi boş olarak ayarlayın

while IFS= read -r line; do
   printf "%s\n" "$line"
done < file.txt

Bu artık dosya.txt satırsonu ile bittiği sürece cat < dosya.txt ile eşdeğerdir.

Kelime bölmenin satırı ayrı kelimelere bölmesini önlemek için "$line" ifadesini çift tırnak içine almanız gerektiğini unutmayın - böylece birden fazla boşluk dizisini kaybedersiniz.

Yorumlar (0)