我需要更改文件中文本行的位置;从一个行位置到另一行,在已定义的文本下方。
例如,我有以下文本块(在/etc/pam.d/system-auth文件中)
account required pam_unix.so
account sufficient pam_localuser.so
account required pam_permit.so
account required pam_tally2.so
我想将最后一行“移动”到第二行(在包含pam_unix.so的行的下面)
如何使用Perl命令完成此操作?
使用此解决方法来解决我的问题...
/bin/grep "pam_tally2.so" /etc/pam.d/system-auth
if [ "$?" -eq "0" ]; then
#looks for line existence (pam_tally2.so) and delete it (if present)
/usr/bin/perl -i -pe 'chomp,$_.="" if /account\s.*required\s.*pam_tally2.so/' /etc/pam.d/system-auth
/usr/bin/find /etc/pam.d/system-auth.bkp | /usr/bin/xargs perl -pi -e 's/account\s*required\s*pam_tally2.so//'
#inserts the -deleted- line underneath pam_unix.so line, as desired. Creating a 'moving line' result.
/usr/bin/perl -i -pe 'chomp,$_.="\n" if /account\s.*required\s.*pam_unix.so/' /etc/pam.d/system-auth
/usr/bin/perl -i -pe 'chomp,$_.="\naccount required pam_tally2.so\n" if /account\s.*required\s.*pam_unix.so/' /etc/pam.d/system-auth
fi
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句