Boşlukları yeni satırlarla nasıl değiştiririm / bir metin dosyasına nasıl girebilirim?


19

"Örnek" adında basit bir metin dosyam var.

Terminal komutuyla okuma: cat example

Çıktı:

abc cdef ghi jk lmnopq rst uv wxyz

Şu forma dönüştürmek (dönüştürmek) istiyorum : (beklenen çıktı cat example)

abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

Bunu komut satırı üzerinden nasıl yapabilirim?

(Bu sadece örnek bir dosyadır, dikey sütundaki kelimenin konumunu dönüştürmek istiyorum )


Yanıtlar:


38

Birkaç seçenek:

  1. Klasik, kullanın tr:

    tr ' ' '\n' < example
    
  2. kullanım cut

    cut -d ' ' --output-delimiter=$'\n' -f 1- example
    
  3. kullanım sed

    sed 's/ /\n/g' example
    
  4. kullanım perl

    perl -pe 's/ /\n/g' example
    
  5. Kabuğu kullan

    foo=$(cat example); echo -e ${foo// /\\n}
    

İçin sedörnek bir eklemek için gerekli $gerçek bir yeni satır ile değiştirin almak için bash yani:sed $'s/ /\\\n/g' example
acumartini

Yukarıdaki OSX sed için örnek, gnu-sed için:sed $'s/ /\\n/g'
acumartini

16

Aşağıdaki komutu deneyin

awk -v RS=" " '{print}' file

VEYA

awk -v RS='[\n ]' '{print}' file

Misal:

$ awk -v RS=" " '{print}' example
abc
cdef
ghi
jk
lmnopq
rst
uv
wxyz

Açıklama:

RS (Kayıt ayırıcı) yerleşik bir awk değişkenidir. İlk komutta, Kayıt ayırıcı değişkenine verilen değer boşluktur. awk bir boşluk bulduğunda çizginin yazdırılmasını engeller.

İkinci komutta, RS değişkenine verilen değer boşluk veya yeni bir satır karakteridir.Bu komut, ilk komutu çalıştırırken ortaya çıkan ekstra boş satırı ortadan kaldırır.


8

Kullanabilirsiniz xargs,

cat example | xargs -n 1

ya da daha iyisi

xargs -n 1 < example

6
xargs -n 1 < example1 yavru kedi kurtardı
Rinzwind

2

Bir perloneliner kullanma :

perl -p -i -e 's/\s/\n/g' example

Boşlukları ve sekmeleri "ENTER" ile değiştirir (aka \n)


1

Kimse python yayınlamadı, işte burada:

python -c "import sys;lines=['\n'.join(l.strip().split()) for l in sys.stdin.readlines()];print('\n'.join(lines))" < input.txt 

Giriş dosyasını python'stdin akışına yönlendiriyoruz ve satır satır okuyoruz. Her satır, son satırdaki satırdan çıkarılır, kelimelere bölünür ve sonra her kelimenin satır satırıyla ayrıldığı bir dizeye yeniden bağlanır. Bu satır başına bir kelimenin olmasını sağlamak ve yanında birden çok satır satırının eklenmesini önlemek için yapılır. herbiri. Sonunda, daha sonra daha büyük bir dizeye eklenen ve stdout akışına yazdırılan dizelerin listesi ile son buluruz. Bu daha sonra yeniden yönlendirmeli başka bir dosyaya > out.txt yeniden yönlendirilebilir.


0

Yukarıdaki 'tr' e benzer ancak eklemeler:

  • Sekmeler için de çalışır

  • Birden çok alanı veya sekmeyi 1 yeni satıra dönüştürür

    tr -s '[:space:]' '\n' < example
    
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.