Изменение персонажа выше определенного шаблона

Не совсем понимаю, что вы имеете в виду.

Но указан каталог

$ ls
bar.txt  foo.abc  foo.txt
$ 

Вы можете сортировать только по имени, удаляя расширение, как показано ниже

$ find. -type f | sort -k 2,2 -t. -u
./bar.txt
./foo.txt
$

Как всегда, пример ввода вместе с желаемым результатом будет очень полезен.

0
07.01.2020, 19:31
3 ответа

Попробуйте перелистнуть исходный файл в обратном порядке

tac file | awk '/^N/ {NT = 1} /^C/ && NT {sub (/^C /, "Cn"); NT = 0} 1' | tac
1
28.01.2020, 02:21

Одно решение:

tac file |
    awk '{if ($1=="C" && l=="N") $1="Cn"} {l=$1} 1' |
    tac |
    column -t

Выход

C   0.749421709  0.227878968   1.429202011  0.000039192
Cn  1.632642695  -0.091443576  2.542631832  -0.000184939
N   0.043615933  0.482209037   0.540453037  0.000123677
H   2.515045687  0.527073165   2.500388888  -0.001989853
H   1.941072900  -1.159598231  2.494001492  0.001039872
H   1.143298831  0.111732200   3.499873978  0.001236466
2
28.01.2020, 02:21

Вы могли бы сделать что-то подобное в sedя думаю:

sed -e '$!N;/^C.*\nN/s/^C/Cn/' -e 'P;D' file

Это поддерживает буфер из 2 -строк в пространстве шаблонов и заменяет начальный C, если в начале второй строки есть N.

0
28.01.2020, 02:21

Теги

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