Si j'ai un fichier avec des lignes comme celle-ci
/some/random/file.csv:some string
/some/random/file2.csv:some string2
Existe-t-il un moyen d'obtenir un fichier qui n'a que la première partie avant les deux points, par exemple.
/some/random/file.csv
/some/random/file2.csv
Je préférerais simplement utiliser un bash one liner, mais Perl ou python est également ok.
cut -d: -f1
ou
awk -F: '{print $1}'
ou
sed 's/:.*//'
Une autre façon BASH pure:
> s='/some/random/file.csv:some string'
> echo "${s%%:*}"
/some/random/file.csv
Essayez ceci en pure bash:
FRED="/some/random/file.csv:some string"
a=${FRED%:*}
echo $a
Ici est une documentation qui aide.
Une autre solution pure Bash:
while IFS=':' read a b ; do
echo "$a"
done < "$infile" > "$outfile"
Cela a été demandé tellement de fois qu'un utilisateur avec plus de 1000 points le demande, c'est étrange
Mais juste pour montrer juste une autre façon de le faire:
echo "/some/random/file.csv:some string" | awk '{sub(/:.*/,x)}1'
/some/random/file.csv