Я хотел бы в файл кошки, но с пределом макс. длине к каждой строке. Например, у меня есть файл с 10 строками, у каждого есть 10 000 символов, и я хотел бы распечатать сначала 100 символов от каждой строки. Похож на что-то что возможный с кошкой или некоторой альтернативой? спасибо.
С cut
инструмент можно ограничить вывод 100. Так как Вы только заинтересовали characters
следовательно столбцы, они занимают это, должны сделать это приятно:
cut -c-100 file
В случае, если Вы хотите удалить пробелы туда, это помогло бы:
sed 's/ //g' file | cut -c-100
См.: man cut
Используя awk
:
awk '{ print substr( $0, 0, 100 ) }' file
Избавление от пробелов снова при необходимости:
awk '{ gsub (" ", "", $0); print substr( $0, 0, 100 ) }' file
AWK:
gsub (" ", "", $0)
: найти " "
(пробелы) и замена ""
глобально в целевой строке $0
.
substr( $0, 0, 100 )
: это возвращает 100 количества символов от строки 0$, запускающиеся в положении 0.
bash
и ksh
способ достигнуть этого был бы:
while IFS= read -r line || [ -n "$line" ];do printf "%s\n" "${line:0:100}"; done < input.txt
Здесь мы используем в своих интересах расширение параметра в форме ${parameter:start:offset}
распечатать от начальной точки, пока не смещено. Должен быть отмечен, что это не указано POSIX и не работает в dash
(значение по умолчанию /bin/sh
на Ubuntu).
perl -ne 'printf "%s\n",substr($_,0,100)' input.txt
Это использует в своих интересах встроенную функцию substr.
python
Python 2.7 на Ubuntu:
python -c 'import sys; print "\n".join(map(lambda x: x[:100],sys.stdin.readlines()))' < input.txt
Для python3 включите аргументы print
с фигурными скобками:
python3 -c 'import sys; print("\n".join(map(lambda x: x[:100],sys.stdin.readlines())))' < input.txt
Это использует в своих интересах перенаправление оболочки для содержания файла в Python stdin
поток, затем читает все строки в список от stdin
. map()
функция позволяет нам обрабатывать тот список через lambda x: x[:100]
, получение нового списка, где каждый объект является частью каждой соответствующей строки, 100 символов в длину. "\n".join()
позволяет нам объединить список строк в одну снова с новой строкой как разделитель.