쉘, Perl 및 Python 스크립트가 혼합 된 Linux 폴더 트리가 있습니다. 어떤 스크립트도 일관된 파일 확장자 (.pl, .perl, .py, .sh 또는 전혀 확장자 없음)를 가지고 있지 않습니다. 어떤 파일이 Perl 스크립트인지 확인한 다음 변수가 Perl 스크립트에없는 경우 변수를 설정하는 새로운 코드 행을 추가해야합니다.Bash 스크립트를 사용하여 perl 스크립트에만 새 코드 줄을 삽입하는 방법
How to insert newline character after comma in `),(` with sed? 덕분에 새 코드 줄을 삽입하는 데 sed를 사용하는이 코드를 생각해 냈습니다.
이 코드는 작동하지만 더 효율적인 방법이 있습니까?
#! /bin/bash
NL='
$|++'
for f in `find "$1" -type f`
do
if [ $(grep -cP "^\#\!/.+/perl" "${f}") -gt 0 ]
then
if [ $(grep -c "$|" "${f}") -eq 0 ]
then
sed -i -r "s/^#!\/(.+)\/perl(.+)$/#!\/\1\/perl\2\\${NL}/g" "${f}"
fi
fi
done
Tripleee 감사합니다. grep은 -q로 전체 파일을 검색하지 않기 때문에 훨씬 빠릅니다. 왜 제가/g을 가지고 있었습니까? 내가 뭘하는지 몰랐으므로 :) 예, 나는 당신이 제안한 대안을 사용했습니다. 그룹에 캡처되었으므로 대체 항목에 "#! /"가 추가됩니다. 나는 그것을 제거했다. 다시 한번 감사드립니다. – tahoar
죄송합니다. 결정된. 주의 해 주셔서 감사합니다. – tripleee