• 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 11 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 11 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 11 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 11 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 11 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

Ubuntu Mate 26.04 | Kern 0
tst 0
Linux Fanpakke til LUG'er og foreninger 0
KDE Plasma 6.6 skrivebordsmiljø udgivet 0
GRUB 2.14 introducerer understøttelse af EROFS, forbedringer til Btrfs og LVM 0

Seneste aktivitet

Gnome extensions 2
Linux 1
Eksperter frygter konsekvenserne ved kunstig intelligens 1
Copy fail sårbarhed åbner for Root adgang 3
USB problemer 4
Frankrig lancerer regeringsplan for skift til Linux desktops 4
Pepsi Challenge 18
Canonical planlægger Kontroversielle GRUB ændringer til Ubuntu 26.10 Secure Boot 1
Ubuntu MATE grundlægger Martin Wimpress træder tilbage efter 12 år 1
OpenShot 3.5 tager et spring fremad inden for ydeevne, AI og videoredigering 4
(U)hyggen breder sig 6
rsync og filsystem 7
Stor sejr for open source, da Tyskland støtter åbent dokumentformat 2
youtube-tui: Nyd YouTube fra terminalen som en professionel 5
Lukker og slukker 8
BigLinux 6
Det engang så elskede PCLinuxOS er tilbage - og det er stadig en fantastisk Windows erstatning 1
Mousam er en detaljeret desktop vejrapp til Linux 1
Hjælp til Handbrake - ingen dk-undertekster 1
luckyBackup 2

© 2026 Linuxin og de respektive skribenter

Oprettet og drevet af nørder siden 2004 !