LINUX.ORG.RU

Пара вопросов по shell и работа с текстовыми файлами


0

1

Здравствуйте.

1 вопрос - как написать программу которая выводила бы из тестового файла N символов с каждой строки в терминал(консоль)?

2 вопрос - в текстовом файле найти самое длинное слово и вывести его в консоль, а если таких слов несколько то записать все их в отдельный файл?

Как это можно решить?

Заранее благодарен за помощь.

Неправильно. Надо так:
Билет N
Задание 1. Написать...
Задание 2. В текстовом ...

Хотя и так всем понятно. Маны читать ты не будешь, гуглить тоже, в Job перейти не согласишься.

adriano32 ★★★
()

адкрываем advanced bash-scripting guide и читаем

visual_pipe
()

1.

#!/bin/bash

FILE=file.txt
N=5

echo "Prepare to the process..."
echo "Be ready!"
echo "Start in 10 sec"

sleep 10

cut -c 1-$N $FILE

echo
echo "Done!"

exit 0

2.

#!/bin/bash

INPUT=file.txt
OUTPUT=txt.file

BIG=""
WORDS=""

for i in $(cat $INPUT)
do
    if [ ${#i} -gt ${#BIG} ]
    then
        BIG="$i"
        WORDS="$i"
        elif [ ${#i} -eq ${#BIG} ]
        then
            WORDS="$WORDS $i"
    fi
done

if [ $(echo $WORDS|wc -w)  -gt 1 ]
then
    echo $WORDS > $OUTPUT
else
    echo $BIG
fi

exit 0

Heretique
()

>2 вопрос

for i in `cat 111.txt`; do echo ${#i} $i; done |sort -nrk1 |head

Дальше дописывать лень.

uzbl
()
Ответ на: комментарий от pimiento

>adriano32

visual_pipe
pimiento

Читал я эту http://www.opennet.ru/docs/RUS/bash_scripting_guide/ статью.. только вот понять не смог через что это делается и посоветовался здесь. Ну и естественно гуглил перед этим, только написать об этом забыл.

Ivan151
() автор топика

1 вопрос - как написать программу которая выводила бы из тестового файла N символов с каждой строки в терминал(консоль)?

$ sed -r 's/^(.{5}).*/\1/' ttt.txt 
Пара 

Здрав

1 воп

2 воп

Как э

Заран

2 вопрос - в текстовом файле найти самое длинное слово и вывести его в консоль, а если таких слов несколько то записать все их в отдельный файл?

$ sed -r 's/\<\w+\>/\n&\r/g;s/^[^\n]*\n//;s/\r[^\r]*$//;s/\r[^\n]*\n/\n/g;/^$/d' input.txt | sed -rn -e 'H;g;s/.*\n(.*)\n(.*)/\1\n\2/;s/\w/~/g;tl1' -e ':l1;s/^(~*)\n(\1)(.*)/\3/;Tl2;/^$/{bl3};g;s/.*\n//;h;bl3' -e ':l2;g;s/\n[^\n]*$//;h' -e ':l3;${x;/\n/{h;s/.*/echo "&" > output.txt/e;g;};p;}'
drBatty ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.