Ta ut del av sträng till variabel?

Här diskuterar vi skal, kommandon och klassiska linuxverktyg.
Användarvisningsbild
johanre
Serveradmin
Inlägg: 3888
Blev medlem: 22 okt 2006, 09:13
OS: Ubuntu
Utgåva: 22.04 Jammy Jellyfish LTS
Ort: Malmö

SV: Ta ut del av sträng till variabel?

Inlägg av johanre »

Menar du t.ex.

Kod: Markera allt

datum=`cat $TIFF.Ifd0.Exif.DateTimeOriginal | awk -F" " '{print $1}' `
Användarvisningsbild
DeepThought
Inlägg: 2769
Blev medlem: 19 dec 2006, 11:07
OS: Arch Linux
Ort: Göteborg

SV: Ta ut del av sträng till variabel?

Inlägg av DeepThought »

Haha, jag satt och funderade på det här precis, så kommer frågan! Ber om ursäkt för att jag trampar in, men eftersom jag precis lyckades med samma sak måste jag skriva ;)

Mitt problem var att sortera ut paketnamn, vilket resulterade i följande:
apt-cache dumpavail | grep "Package:" | gawk -F: '{print $2 }' | sort

Men jag hittade följande, vilket kanske gjorde ovanstående överflödigt?
apt-cache pkgnames | sort

F.ö. verkar de verkar returnera ungefär samma, men det första ger bara ~23000 träffar, och det andra ger ~30000 träffar :-\ Beror kanske på att vissa paket som listas inte är tillgängliga..

Nåväl, till mitt problem: när jag kör gawk -F: '{print $2 }' så får jag ett mellanslag först på raden när den skrivs ut (d.v.s. det mellanrum som finns mellan Package: och paketnamnet). Varför? Hur blir jag av med det?
WE WILL ALWAYS BE SO MUCH MORE HUMAN THAN WE WISH TO BE...
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Ta ut del av sträng till variabel?

Inlägg av Konservburk »

DeepThought skrev: Nåväl, till mitt problem: när jag kör gawk -F: '{print $2 }' så får jag ett mellanslag först på raden när den skrivs ut (d.v.s. det mellanrum som finns mellan Package: och paketnamnet).
DeepThought skrev: Varför?
Eftersom du sätter fältseparatorn till kolon (-F:) så kommer
$2 att bli allt mellan det det första och (eventuellt) andra
kolonet, inklusive mellanrum.
DeepThought skrev: Hur blir jag av med det?
T.ex.

Kod: Markera allt

apt-cache dumpavail | awk '/^Package: /{print $2}'
Användarvisningsbild
DeepThought
Inlägg: 2769
Blev medlem: 19 dec 2006, 11:07
OS: Arch Linux
Ort: Göteborg

SV: Ta ut del av sträng till variabel?

Inlägg av DeepThought »

Ah! Nu trillade två poletter ner ;D

Tack!
WE WILL ALWAYS BE SO MUCH MORE HUMAN THAN WE WISH TO BE...
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Ta ut del av sträng till variabel?

Inlägg av Konservburk »

Håkan skrev: Har klarat få ut datum delen till en variabel :). Skulle nu behöva byta datum format på variabeln från 2007:09:01 till 2007-09-01.

exempel

Kod: Markera allt

hakan@Bilbo-laptop:~/test$ datum=2007:09:01
hakan@Bilbo-laptop:~/test$ echo $datum
2007:09:01

Kod: Markera allt

bash$ datum=2007:09:01
bash$ echo ${datum//:/-}
2007-09-01
Användarvisningsbild
Konservburk
Inlägg: 5919
Blev medlem: 07 apr 2007, 22:28

SV: Ta ut del av sträng till variabel?

Inlägg av Konservburk »

Håkan skrev: Det har visat sig att datumet ligger på lika ställen beroende på filtyp. Använder följande kod för att få ut strängen när bilden är tagen

Kod: Markera allt

text=`exifgrep Exif.DateTimeOriginal _DSC0801.NEF`
Nu skulle jag vilja få datumet i till en variabel gärna med - istället för :

Kod: Markera allt

datum=$(exifprobe -L _DSC0801.NEF | awk -F"[ ':=]*" '/Exif.DateTimeOriginal/{print $2 "-" $3 "-" $4}')
Om du vill ha ut datumet på formen YYYY-MM istället så kan du
helt enkelt strunta i att ta med "-" $4, dvs {print $2 "-" $3}.
Skriv svar

Återgå till "Terminalforum"