Mam plik tekstowy z następującą zawartością
Torrent file : Linux.Format.-.October.2016.-.True.Pdf.-.Set.1001.[ECLiPSE].torrent
Metadata info : 9968 bytes, 412 pieces, 65536 bytes per piece
Torrent name : Linux Format - October 2016 - True Pdf - Set 1001 [ECLiPSE]
Content info : 3 files, 26965176 bytes
Announce URL : http://explodie.org:6969/announce
F# Bytes File name
--- ----------- ---------------------------------------------------------------
1 26944026 linfor1016.pdf
2 19963 ECLiPSE.txt
3 1187 Read Me.txt
Torrent file : linuxmint-13-cinnamon-dvd-64bit.iso.torrent
Metadata info : 32303 bytes, 1602 pieces, 524288 bytes per piece
Torrent name : linuxmint-13-cinnamon-dvd-64bit.iso
Content info : single file, 839909376 bytes
Announce URL : http://torrents.linuxmint.com/announce.php
Torrent file : linuxmint-13-kde-dvd-64bit.iso.torrent
Metadata info : 35938 bytes, 1784 pieces, 524288 bytes per piece
Torrent name : linuxmint-13-kde-dvd-64bit.iso
Content info : single file, 935329792 bytes
Announce URL : http://torrents.linuxmint.com/announce.php
plik jest generowany przez
for i in *.torrent;do torrentcheck -t $i >> info.txt;done
Teraz chcę przekonwertować ten plik txt tak, że dostaję plik CSV z dwóch kolumn , a mianowicie Torrent pliku i informacją Content (jako nagłówków) dla każdego pliku torrent analizowany za pomocą powyższego polecenia bash jak:
Torrent file,Content info
Linux.Format.-.October.2016.-.True.Pdf.-.Set.1001.[ECLiPSE].torrent,3 files, 26965176 bytes
linuxmint-13-cinnamon-dvd-64bit.iso.torrent,single file, 839909376 bytes
linuxmint-13-kde-dvd-64bit.iso.torrent,single file, 935329792 bytes
kolumny mogą być następnie przetwarzane w dowolnej aplikacji Arkusz kalkulacyjny w celu sortowania torrentów według ich wielkości lub liczby zawartych w nich plików ...
Mogę wyszukiwać ciągi plików takie jak
grep 'Torrent file' info.txt or grep 'Content' info.txt
ale jak grać ze zwrotnymi ciągami tekstowymi, aby wyodrębnić wymagane informacje, np. jeśli otrzymam Torrent file : linuxmint-13-cinnamon-dvd-64bit.iso.torrent
, mogę użyć poleceń MID, LEN arkusza kalkulacyjnego, aby zredukować ciąg dolinuxmint-13-cinnamon-dvd-64bit.iso.torrent
źródło
echo "Torrent file,Content info" > info.csv && cat info.txt | awk -F': ' '$1=="Torrent file " { save = $2 } $1=="Content info " { printf "%s,%s\n",save,$2 }' >> info.csv
Torrent file,Content info
niczym innym .. Uruchamiam twoje polecenie po cd'owaniu do katalogu zawierającego info.txtT
Torrent musi być pierwszym znakiem w linii, na przykład bez spacji.echo "Torrent file,Content info" > info.csv && cat info.txt | awk -F': ' ' $1=="Torrent file " { save = $2 } $1=="Content info " { printf "%s,%s\n",save,$2 }' >> info.csv