Как в файл кошки с пределом печатных символов от каждой строки?

Я хотел бы в файл кошки, но с пределом макс. длине к каждой строке. Например, у меня есть файл с 10 строками, у каждого есть 10 000 символов, и я хотел бы распечатать сначала 100 символов от каждой строки. Похож на что-то что возможный с кошкой или некоторой альтернативой? спасибо.

5
задан 4 October 2017 в 15:49

2 ответа

С 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.

7
ответ дан 23 November 2019 в 08:54

Shell

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

perl -ne 'printf "%s\n",substr($_,0,100)' input.txt

Это использует в своих интересах встроенную функцию substr.

Python

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() позволяет нам объединить список строк в одну снова с новой строкой как разделитель.

2
ответ дан 23 November 2019 в 08:54

Другие вопросы по тегам:

Похожие вопросы: