it-swarm.com.de

Bash, extrahieren Sie die Zeichenfolge vor einem Doppelpunkt

Wenn ich eine Datei mit solchen Zeilen habe

/some/random/file.csv:some string
/some/random/file2.csv:some string2

Gibt es eine Möglichkeit, eine Datei zu erhalten, die nur den ersten Teil vor dem Doppelpunkt enthält, z.

/some/random/file.csv
/some/random/file2.csv

Ich würde es vorziehen, nur einen Bash-Liner zu verwenden, aber Perl oder python ist auch in Ordnung.

34
user788171
cut -d: -f1

oder

awk -F: '{print $1}'

oder

sed 's/:.*//'
62
ray

Ein weiterer reiner BASH-Weg:

> s='/some/random/file.csv:some string'
> echo "${s%%:*}"
/some/random/file.csv
37
anubhava

Versuchen Sie dies in reiner Bash:

FRED="/some/random/file.csv:some string"
a=${FRED%:*}
echo $a

Hier ist eine Dokumentation, die hilft.

17
Mark Setchell

Eine andere reine Bash-Lösung:

while IFS=':' read a b ; do
  echo "$a"
done < "$infile" > "$outfile"
1
Fritz G. Mehner

Dies wurde so oft gefragt, dass ein Benutzer mit mehr als 1000 Punkten dies fragt, was seltsam ist
Aber nur um einen anderen Weg zu zeigen:

echo "/some/random/file.csv:some string" | awk '{sub(/:.*/,x)}1'
/some/random/file.csv
0
Jotne