Чтение переменной из txt файла с помощью bash

Вы хотите сначала извлечь 36-строчный заголовок из файла с именем input, затем выбрать 60000 случайных строк из остальной части файла с возможностью случайного выбора одной и той же строки несколько раз. Весь вывод должен идти в файл с именем output.

Использование shufиз GNU coreutils:

#!/bin/sh

# Fetch header (36 first lines)
head -n 36 <input >output

# Scramble the other lines and pick 60000 (allowing for repeated lines)
tail -n +37 <input | shuf -r -n 60000 >>output

В качестве альтернативы:

( head -n 36 <input; tail -n +37 <input | shuf -r -n 60000 ) >output

С GNU head, который оставляет поток входного файла в позиции после последней выведенной строки, что означает, что shufможет продолжаться там, где headзакончил чтение (это может не работать с некоторыми не -реализации GNU head):

( head -n 36; shuf -r -n 60000 ) <input >output
0
08.01.2020, 23:44
1 ответ

@steedriver обнаружил проблему :В Windows в конце строки есть escape-символы, которых нет в Linux. Я создал входной текстовый файл ab.txt в Windows, поэтому Linux считывает лишние символы в переменные a, b. Мое решение состояло в том, чтобы преобразовать ab.text с помощью dos2unix, и это сработало.

0
28.01.2020, 02:57

Теги

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