LINUX.ORG.RU

Чтение файлов из списка файлов

 ,


0

3

Всем добрый день. Я в Linux ещё нуб полнейший, поэтому прошу помощи. Помогите написать скрипт. «В параметрах скрипта задан список имён файлов. Файлы, содержащие чётное количество строк, скопировать в один файл, а с нечётным количеством строк – в другой файл.» Вот такое задание. Я Linux только познаю поэтому пока в голове каша. Как я понял нужно чтобы скрипт создавал файл с именами файлов и просматривал их, и на основании этого создавал 2 файла. Пока я разобрался только с тем как создать файл в котором будут имена файлов и понял как разделить один файл на 2

ls | sed 's/\..*$//' | sort -u > fail.txt 
awk '{ if (NR%2) print > "ch.txt"; else print > "nech.txt" }' 1.txt 

а как их связать не понял. Или надо как-то иначе делать? Буду очень признателен за помощь =)



Последнее исправление: Megartonus (всего исправлений: 1)

wc -l - считает кол-во строк % - оператор остатка от деления

Niroday
()

awk '{ if (NR%2) print > «ch.txt»; else print > «nech.txt» }' 1.txt

И операторы перенаправления потоков ввода/вывода действуют в пределах shell, а не в пределах команды awk или какой-то др. команды. Т. е. ими можно перенаправить вывод команды awk, но не вывод оператора print внутри awk.

И выделяй код, а также вывод команд в консоли тегом [code]здесь код или вывод консольной команды[/code].

И что с чем надо связывать, — непонятно. Сформулируй вопрос чётче.

ls | sed 's/\..*$//' | sort -u > fail.txt

fail — это фейл или неудача, а файл — это file.

aureliano15 ★★
()
Последнее исправление: aureliano15 (всего исправлений: 1)
cat list
a.txt
b.txt

cat a.txt
111
111
111

cat b.txt
222
222
for i in `cat list`
do
  echo -n "$i  "
  if [[ "`cat $i | wc -l`%2" -eq "0" ]]
  then
    echo -e "even\n"
  else
    echo -e "uneven"
  fi
done

Простенько, но работает. Можно конечно короче и круче, но код будет менее понятен. Я не суперспец...

S_Paul ★★★★★
()
Последнее исправление: S_Paul (всего исправлений: 1)

Какой смысл использовать исковерканный транслит в именах переменных и сообщений? Дали вам русский язык, вот и пишите на нём. Умеете в английский, пишите на нём. Но вот так на транслите не надо: borsch = svikla + markovka * 3 + vodda + kartoshichka. Лучше уж писать: a1=a2+a43+b1*3+c67.

justAmoment ★★★★★
()
Ответ на: even/odd от justAmoment

Да, спасибо. Я не могу похвастаться хорошим английским, google translate сказал even/uneven...

S_Paul ★★★★★
()
Ответ на: комментарий от S_Paul

А на что он сказал «uneven»? Потому что я сейчас специально попробовал вбить, на «нечётный» (слитно) он говорит «odd», а на «не чётный» (раздельно) — «not even».

aureliano15 ★★
()
Ответ на: комментарий от justAmoment

Особое благоговение вызывают деятели называющие переменные подобным образом «KARTOFELb», «APRELb», «AHTOHYM».

Пример из жизни. Есть у нас одно из градообразующих предприятий «Ангарская Нефтехимическая Компания». И ещё 10 лет назад был у неё свой домен AHXK.RU. Так вот... У всех работников официальная почта была в этом домене: типа такой ivanov_uv@ahxk.ru. А теперь попробуйте продиктовать этот адрес по телефону контрагенту. И насколько слабоумным вас будет считать человек, которому вы первый раз показываете этот свой адрес. И это, бля, официальный адрес конторки с постоянным составом рабочих в 12 тысяч человек и 4 тысячи рабочих компов.

Некоторые ссылки в интернете и до сих пор остались.

https://www.google.ru/search?q="@AHXK.ru"

justAmoment ★★★★★
()
Ответ на: комментарий от aureliano15

Блин, я просто вбил в гугл-переводчике «нечётный», один из вариантов был «uneven». Этот вариант в скрипте лучше читается чем «odd». Всего лишь.

S_Paul ★★★★★
()
Ответ на: комментарий от S_Paul

Нужен был хорошо читающийся пример для новичка.

Я всё-таки склоняю тебя к мысли что для новичка

echo -e "чётный\n"
и
echo -e "нечётный\n"
будет более понятно выглядеть.

А переживать, что какой-то китаец с иероглифами головного мозга, что-то там не распарсит на русском форуме в выводе echo -e "нечётный\n". Ну, это такое себе, да.

justAmoment ★★★★★
()
Ответ на: комментарий от justAmoment

Можно вписать хоть «жопка»/«не жопка»:)))

S_Paul ★★★★★
()
Ответ на: комментарий от justAmoment

Пример из жизни. Есть у нас одно из градообразующих предприятий «Ангарская Нефтехимическая Компания». И ещё 10 лет назад был у неё свой домен AHXK.RU. Так вот... У всех работников официальная почта была в этом домене: типа такой ivanov_uv@ahxk.ru. А теперь попробуйте продиктовать этот адрес по телефону контрагенту.

Легко. Как-то так диктовал бы: «Пиши в верхнем регистре первые буквы слов Ангарская Нефте [пауза] Химическая Компания. Теперь представь, что это не русские, а латинские буквы, добавь точку и домен ru и получишь имя почтового сервера.»

Некоторые ссылки в интернете и до сих пор остались.

Лет 10 — 15 назад видел вообще эпические картинки с изображением коробки с сидюком, на котором было написано «аппаратно-программный комплекс shit» (конечно же, имелось в виду «щит»). :-)

Сейчас погуглил, почти ничего не нашёл, кроме ссылки, где этот самый shit указан в адресной строке (в самом тексте только щиты): http://yugsys.nt-rt.ru/images/manuals/shit.pdf . Тот самый это shit, который я видел тогда, или какое-то другое shit — точно не скажу.

aureliano15 ★★
()
Ответ на: комментарий от S_Paul

один из вариантов был «uneven».

Да, точно. На варианты я не посмотрел. Смотрел только на дефолтный перевод.

aureliano15 ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.