bash, извлечь строку перед двоеточием

Если у меня есть файл с такими строками

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

Есть ли способ получить файл, который имеет только первую часть перед двоеточием, например

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

Я бы предпочел просто использовать bash один лайнер, но perl или python тоже в порядке.

Ответы

Ответ 1

cut -d: -f1

или

awk -F: '{print $1}'

или

sed 's/:.*//'

Ответ 2

Еще один чистый метод BASH:

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

Ответ 3

Попробуйте это в чистом bash:

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

Вот некоторая документация, которая помогает.

Ответ 4

Другое чистое решение Bash:

while IFS=':' read a b ; do
  echo "$a"
done < "$infile" > "$outfile"

Ответ 5

Это задавали так много раз, чтобы пользователь с более чем 1000 точками просил об этом,
Но просто для того, чтобы показать еще один способ сделать это:

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