• Opret dig
  • Glemt adgangskode

User account menu

  • Artikler
  • Forside
  • Forum
  • Nyheder
  • Log ind
Hjem
LinuxIN.dk

Snak med

Opret dig!

Af sjofelpanda | 08.06.2010 16:10

Sed og mellemrum

Hjælp generelt
Hej alle sed-guruer.

Jeg har en tekstfil, som indeholder adskillige linier der ender med en masse mellemrum (flere end 3) efterfuldt af en række forskellige tal (typisk fire tal). Dette vil jeg gerne fjerne, så linien


Test test bla bla 1985


bliver til


Test test bla bla


Dette burde kunne gøres med sed, som jeg slet ikke er inde i. Indtil videre har fundet ud af, at


cat "$FILE0" | \
sed -e 's/\s\{3,\}/ /g' > "$FILE00"


fjerner alle forekomster af 3 eller flere mellemrum, men jeg vil jo gerne have slutningen af linierne fjernet samtidig.
  • Log ind eller opret dig for at tilføje kommentarer

Kommentarer5

# 1

15 år 9 måneder siden

Permalink

Indsendt af mich den 8. juni 2010 kl. 17:33

Permalink

Sed og mellemrum

Jeg er ingen ørn til sed, men følgende bash-script skulle kunne gøre det.

#!/bin/bash

while read line ;do
echo "${line%% *}" >> "$File00"
done < "$File0"

Det sletter fra og med de første tre mellemrum og resten af linien, linie for linie i filen "$File0" og skriver til "$File00".
Skal du behandle flere filer, skal der lidt 'for File0 in ' osv med.

Prøv på en kopi først. Jeg påtager mig intet ansvar, hvis du sletter vigtige filer.

  • Log ind eller opret dig for at tilføje kommentarer

# 2

15 år 9 måneder siden

Permalink

Indsendt af mrbrown79 den 11. juni 2010 kl. 15:31

In reply to Sed og mellemrum by mich

Permalink

Et forsøg fra en ikke-guru

$ echo "Test test bla bla 1985" | sed 's/\(.*\) \{3,\}.*$/\1/'
Test test bla bla
  • Log ind eller opret dig for at tilføje kommentarer

# 3

15 år 9 måneder siden

Permalink

Indsendt af sjofelpanda den 8. juni 2010 kl. 19:29

Permalink

Re: Sed og mellemrum

Tak for forslaget. Jeg kunne ikke helt få dit bash-script til at fungere præcis som jeg ville. Jeg har fandt dog frem til følgende, som virker:


cat "$FILE0" | \
sed -e '
s/\s\{3,\}/&\
/
s/\n.*//
' > "$FILE00"
  • Log ind eller opret dig for at tilføje kommentarer

# 4

15 år 9 måneder siden

Permalink

Indsendt af redeeman den 9. juni 2010 kl. 02:29

Permalink

Re: Sed og mellemrum

cat fil.txt | awk '{print $1 " " $2 " " $3}'
  • Log ind eller opret dig for at tilføje kommentarer

# 5

15 år 9 måneder siden

Permalink

Indsendt af marlar den 11. juni 2010 kl. 16:22

Permalink

#4 virker ikke hos mig.
Hvis

#4 virker ikke hos mig.

Hvis det bare handler om at fjerner tal i slutningen af en linje, virker dette:

echo "Test test bla bla 1985" | sed -r 's/[0-9]+$//g'
  • Log ind eller opret dig for at tilføje kommentarer

Svar søges

KDE Plasma 6.6 skrivebordsmiljø udgivet 0
youtube-tui: Nyd YouTube fra terminalen som en professionel 0
GRUB 2.14 introducerer understøttelse af EROFS, forbedringer til Btrfs og LVM 0
KDE Plasma 6.6 tilføjer en funktion, som brugerne har spurgt efter i evigheder 0
Linux i København 12.01.2026: Open source i det offentlige 0

Seneste aktivitet

BigLinux 5
Det engang så elskede PCLinuxOS er tilbage - og det er stadig en fantastisk Windows erstatning 1
rsync og filsystem 6
Mousam er en detaljeret desktop vejrapp til Linux 1
Hjælp til Handbrake - ingen dk-undertekster 1
luckyBackup 2
GIMP 30
Pinegrow på Debian 13 ? 4
Openmediavault 1
E-mail blues 9
Driver til min scanner? 5
Printer Epson ET-2865 problem 16
Sudo 7
Thunderbird filvedligeholdelse 2
Debian 13.3.0 8
Linux Mint 22.3 - hvornår opdatere? 10
Canon-printer: Jeg savner "Ink-Toner Level"-meddelelse 10
billede af nuværende installation 2
mapper 4
LinuxIn live 9

© 2026 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !