我有一个包含混合shell、Perl和Python脚本的Linux文件夹树。所有脚本都没有一致的文件扩展名(.pl、.perl、.py、.sh或根本没有扩展名)。我需要确定哪些文件是Perl脚本,如果变量不在Perl脚本中,则添加新的代码行来设置该变量。
多亏了,我想出了这段代码,它使用sed插入新的代码行。
这段代码可以工作,但是有没有更有效的方法呢?
#! /bin/bash
NL='
$|++'
for f in `find "$1" -type f`
do
if [ $(grep -cP "^\#\!/.+/perl"
在我的机器上安装的默认perl版本是5.26.1。我通过使用以下命令发现了这一点:
perl -v
This is perl 5, version 26, subversion 1 (v5.26.1) built for x86_64-linux-gnu-thread-multi
(with 71 registered patches, see perl -V for more detail)
Copyright 1987-2017, Larry Wall
Perl may be copied only under the terms of either the Artistic Li
我熟悉bash中的shell编程,但由于某些原因,仅打印匹配单词的egrep -o不起作用,并显示如下错误。
环境是ksh unix console on putty,而不是linux或ubuntu terminal......any建议!
终端输入和输出:
AB12 $ echo "i am a boy" | grep -w "am"
i am a boy
AB12 $ echo "i am a boy" | egrep -o "am"
egrep: illegal option -- o
usage: egrep [ -bch
我四处搜索,发现了这两个主题,但是它们是不同的,因为空间的数量是固定的,而我的样本没有固定的空间计数。
https://stackoverflow.com/questions/47428445/i-want-grep-to-grep-one-word-which-is-having-spaces-it
https://askubuntu.com/questions/949326/how-to-include-a-space-character-with-grep
样本文本:
Section 1: Plan your day, write out your plan
期望产出:
Section
我需要能够显示每个服务端口打开的I,每个服务按字母顺序列出,格式如下:
ftp
============
192.168.33.226
192.168.33.129
192.168.33.220
http-alt
============
192.168.33.243
192.168.33.252
我有一个包含ips列表的nmap结果的文件,如下所示:
Nmap scan report for 192.168.33.252
Host is up (0.041s latency).
Not shown: 999 filtered ports
PORT STATE SERVICE
800
下面是文件中的内容
SM Filesystems - ci240min;vlg00457.wdf.sap.corp;00205495930028250313;;Virtual_Gcp,Virtual,SISM_responsible,Linux_Suse,Linux,E2E_Services,Database,DLM;;;;0;warning;OK: all local filesystems are writeable OK: /var is mounted with correct options \nOK: /home is mounted with correct options \n
但是,在通过Perl安装ExtUtils/Embed时,将我的cpan更新到了5.17.4版,而实际上应该是5.10.1-127版(在我使用强制安装方法时,可能是通过依赖项来实现的)。
所以现在我遇到了几十个问题,比如错误:
../x86_64-linux/CORE/libperl.a(op.o): relocation R_X86_64_32S against `PL_sv_yes' can not be used when making a shared object; recompile with -fPIC
编译器正在使用这个新的perl,而不是旧的兼容perl,这不会给我这