Не совсем понимаю, что вы имеете в виду.
Но указан каталог
$ ls
bar.txt foo.abc foo.txt
$
Вы можете сортировать только по имени, удаляя расширение, как показано ниже
$ find. -type f | sort -k 2,2 -t. -u
./bar.txt
./foo.txt
$
Как всегда, пример ввода вместе с желаемым результатом будет очень полезен.
Попробуйте перелистнуть исходный файл в обратном порядке
tac file | awk '/^N/ {NT = 1} /^C/ && NT {sub (/^C /, "Cn"); NT = 0} 1' | tac
Одно решение:
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
Вы могли бы сделать что-то подобное в sed
я думаю:
sed -e '$!N;/^C.*\nN/s/^C/Cn/' -e 'P;D' file
Это поддерживает буфер из 2 -строк в пространстве шаблонов и заменяет начальный C
, если в начале второй строки есть N
.