Проблема в том, что ваша звездочка интерпретируется оболочкой ДО того, как она будет передана в find
в качестве аргумента.
Т.е. если у вас есть файл типа script.sh
в текущем рабочем каталоге, откуда вы выполняете find, ваша команда будет выглядеть как
это:
#command you type:
find . -name *.sh
#command the shell creates:
find . -name script.sh
Так что в вашем случае это первая соответствует *. sh
в a_root_dir
, как интерпретируется оболочкой, и ваша команда буквально такова:
find . -name run.sh
Что вам нужно сделать, это использовать жесткие кавычки, чтобы подавить оболочку, расширяющую звездочка перед выполнением find
:
find . -name '*.sh'
С sed
:
sed -E 's/^([^[:blank:]]+)/\1N-H/' file.txt
([^ [: blank:]] +)
соответствует первому полю ( ^
) и помещается в только захваченную группу
В замене NH
добавляется к первому полю, \ 1N-H
В awk
:
awk '{sub("$", "N-H", $1)}; 1' file.txt
sub ("$", "NH", $ 1)
замените конец первого поля ( $
) с NH
, это обязательно означает операцию добавления, вместо
1
- это просто заполнитель для true
, так что (измененная) запись печатается
Пример:
% cat file.txt
A3 124.406526 8.281803
A3' 125.000684 8.389677
K4 123.072842 8.166373
K4' 120.092553 8.269080
% sed -E 's/^([^[:blank:]]+)/\1N-H/' file.txt
A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080
% awk '{sub("$", "N-H", $1)}; 1' file.txt
A3N-H 124.406526 8.281803
A3'N-H 125.000684 8.389677
K4N-H 123.072842 8.166373
K4'N-H 120.092553 8.269080