Ответ 1
cut -d: -f1
или
awk -F: '{print $1}'
или
sed 's/:.*//'
Если у меня есть файл с такими строками
/some/random/file.csv:some string
/some/random/file2.csv:some string2
Есть ли способ получить файл, который имеет только первую часть перед двоеточием, например
/some/random/file.csv
/some/random/file2.csv
Я бы предпочел просто использовать bash один лайнер, но perl или python тоже в порядке.
cut -d: -f1
или
awk -F: '{print $1}'
или
sed 's/:.*//'
Еще один чистый метод BASH:
> s='/some/random/file.csv:some string'
> echo "${s%%:*}"
/some/random/file.csv
Попробуйте это в чистом bash:
FRED="/some/random/file.csv:some string"
a=${FRED%:*}
echo $a
Вот некоторая документация, которая помогает.
Другое чистое решение Bash:
while IFS=':' read a b ; do
echo "$a"
done < "$infile" > "$outfile"
Это задавали так много раз, чтобы пользователь с более чем 1000 точками просил об этом,
Но просто для того, чтобы показать еще один способ сделать это:
echo "/some/random/file.csv:some string" | awk '{sub(/:.*/,x)}1'
/some/random/file.csv