напечатать имя файла и нечетные строки в каталоге - PullRequest
0 голосов
/ 13 января 2020

Я пытаюсь вывести (напечатать) имя файла, за которым следуют файлы нечетных строк в каталоге.

Что я хочу вывести

linereader: line 1
linereader: line 3
lineareder2: q
lineareader2: e

Что я получаю

linereader:
line 1
line 3
line 5
linereader2:
q
e
q
e

мой код

for file in *; 
do 
    if [ -f "$file" ]; then
        echo "$file": && sed -n 1~2p $file
    fi 
done

Ответы [ 2 ]

1 голос
/ 13 января 2020

Вы можете использовать подстановку sed:

for file in *; 
do 
    if [ -f "$file" ]; then
        sed -n "1~2s/.*/$file: &/p" $file
    fi 
done

Эта подстановка применяется к нечетным строкам, 1~2s. Он сопоставляет весь текст в строке /.*/, заменяет его именем файла плюс сопоставленный текст /$file: &/ и печатает его на стандартный вывод p.

0 голосов
/ 13 января 2020

IMO, самый чистый (самый простой для понимания) способ:

echo $file
awk 'NR % 2 == 1 {print}' $file

Это выражает ваши требования почти дословно. NR содержит номер строки, а % - оператор модуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...