Questions tagged «perl»

Perl是一种高级通用,解释性动态编程语言。它最初是由拉里·沃尔(Larry Wall)开发的,是一种通用的Unix脚本语言,旨在简化报表的处理。在开放源代码社区的支持下,经过一段时间,它已经发展并成熟,可用于图形编程,系统管理,网络编程,财务。 ,生物信息学和其他工程应用。

8
如何替换文件中的字符串?
根据某些搜索条件替换文件中的字符串是非常常见的任务。我怎样才能 替换字符串foo用bar在当前目录下的所有文件? 递归子目录是否一样? 仅在文件名匹配另一个字符串时才替换? 仅在特定上下文中找到字符串时才替换? 如果字符串在某个行号上,请替换? 用相同的替换替换多个字符串 用不同的替换项替换多个字符串
751 text-processing  awk  sed  perl 

3
$ {1 +“ $ @”}在shell脚本中是什么意思,它与“ $ @”有什么区别?
在Perl文档中,perlrun(1)建议使用双语shell / Perl标头启动Perl脚本: #!/bin/sh #! -*-perl-*- eval 'exec perl -x -wS $0 ${1+"$@"}' if 0; 什么${1+"$@"}意思 我尝试使用"$@"代替(使用Bash作为/ bin / sh),它似乎同样有效。 编辑 以下两个答案说应该是${1:+"$@"}。我知道${parameter:+word}bash(1)中记录了(“使用替代值”)语法。但是,我不敢相信,因为 无论${1+"$@"}和"$@"工作得很好,即使在没有参数。如果我创建simple.sh为 #!/bin/sh eval 'exec /usr/bin/perl -x -S -- $0 "$@"' if 0; #!perl use Data::Dumper; print Dumper(\@ARGV); 和question.sh为 #!/bin/sh eval 'exec /usr/bin/perl -x -S -- $0 ${1+"$@"}' if …
43 bash  shell  perl 

6
如何以人类可读的格式列出目录中每个文件的行数。
我有一个包含大型csv文件的目录和子目录的列表。这些文件中大约有5亿行,每行都是一个记录。我想知道 每个文件中有几行。 目录中有几行。 总共多少行 最重要的是,例如,我需要使用“人类可读格式”。12,345,678而不是12345678 最好以3种方式来学习如何做到这一点。普通的香草bash工具,awk等,以及perl(或python)。
40 bash  awk  python  perl 

7
Linux相当于PowerShell的“一对多”远程处理
来自Windows管理,我想更深入地研究Linux(Debian)。我无法在网络上搜索(找不到)的最棘手的问题之一是:如何像在Windows PowerShell中那样实现所谓的“一对多”远程处理? 简而言之,我会说: 我对Linux的看法: 我可以进入服务器并输入命令 我得到结果。对于10个服务器的环境,我必须编写一个(perl / python?)脚本,为每个服务器发送命令? 我在Windows上的经验: 我键入命令,然后使用“调用命令”将其“发送”到一堆服务器(可能来自文本文件)以同时执行并返回结果(作为进一步工作的对象)。 我什至可以建立多个会话,连接保留在后台,然后有选择地向这些会话发送命令,并根据需要进行远程输入和输出。 (我听说过厨师,木偶等。是这样吗?) Update 2019: 尝试了很多之后-我建议使用Rex(请参阅下面的评论)-易于设置(实际上只需要ssh,不需要其他操作)并使用(如果您只知道一点点perl,效果会更好,但它是可选的) 与Rex(ify )您可以执行adhoc命令并将其推进到实际的配置管理中(...含义:它首先是CM,但也适用于addhoc任务)该网站已过时,但是目前(截至01/2019)它正在积极开发中,并且IRC通道也处于活跃状态。 使用Windows的新openssh,甚至还有更多可能性 你可以试试: rex -u user -p password -H 192.168.1.3 -e 'say run "hostname"'


10
如何在模式(标记)之前将文件的内容插入另一个文件?
File1 内容: line1-file1 "1" line2-file1 "2" line3-file1 "3" line4-file1 "4" File2 内容: line1-file2 "25" line2-file2 "24" Pointer-file2 "23" line4-file2 "22" line5-file2 "21" 执行完perl / shell脚本后,File2内容应变为: line1-file2 "25" line2-file2 "24" line1-file1 "1" line2-file1 "2" line3-file1 "3" line4-file1 "4" Pointer-file2 "23" line4-file2 "22" line5-file2 "21" 即,将File1in 的内容粘贴在File2包含“ Pointer”的行之前。

4
如何“ grep”给定范围内的线长?
注意:此问题是此问答的补充:如何在给定范围内“ grep”表示行长*不是*? 我只需要从长度范围小于或等于3个字符,但不大于或等于10的文本文件(单词列表,用换行符分隔)中获取行。 例: 输入: egyezményét megkíván ki alma kevesen meghatározó 输出: megkíván alma kevesen 问题:我该怎么做bash?
28 bash  sed  grep  perl 

13
将CSV转换为TSV
我有许多大型CSV文件,希望它们采用TSV(制表符分隔格式)。复杂之处在于CSV文件的字段中有逗号,例如: A,,C,"D,E,F","G",I,"K,L,M",Z 预期产量: A C D,E,F G I K,L,M Z (中间的空格是“硬”标签) 我在此服务器上安装了Perl,Python和coreutils。

2
运行perl -ne'...'的安全隐患*
显然,正在运行: perl -n -e 'some perl code' * 要么 find . ... -exec perl -n -e '...' {} + (与相同,-p而不是-n) 要么 perl -e 'some code using <>' * 通常在此网站上发布的单行代码中发现,具有安全隐患。这是怎么回事?如何避免呢?


1
在shebang之后签到?
在Apache httpd项目的“ support / apxs.in”脚本中,之后是带@符号的文本#!。也就是说,脚本的第一行是: #!@perlbin@ -w 这是Perl还是UNIX内核?换句话说,可以使用path/to/script/script_name.in?执行该脚本。 如果不是,那么使用#!?启动脚本的原因是什么?

8
如何在Linux中删除文件的最后一列
我想删除txt文件的最后一列,但我不知道列号是什么。我该怎么办? 例: 输入: 1223 1234 1323 ... 2222 123 1233 1234 1233 ... 3444 125 0000 5553 3455 ... 2334 222 我希望我的输出是: 1223 1234 1323 ... 2222 1233 1234 1233 ... 3444 0000 5553 3455 ... 2334


1
所有重命名是什么:预命名,重命名,文件重命名?
在我的Debian系统上(我的LMDE系统,但足够接近),我至少有3个不同的rename程序: /usr/local/bin/rename:这是由Tom Christiansen编写的Perl脚本。奇怪的是,我似乎找不到安装它的软件包: $ dpkg -S /usr/local/bin/rename dpkg-query: no path found matching pattern /usr/local/bin/rename /usr/bin/prename:另一个由Robin Barker编写的perl脚本,它是perl软件包的一部分: $ dpkg -S /usr/bin/prename perl: /usr/bin/prename /usr/bin/file-rename:另一个Perl脚本,没有明确的作者信息,但同时提到了Larry(可能是Wall)和Robin(可能是Barker)。该rename软件包由软件包安装,并且也链接到/usr/bin/rename: $ dpkg -S /usr/bin/file-rename rename: /usr/bin/file-rename 我也有rename.ul,util-linux但现在让我们忽略它。这3个Perl脚本之间有什么区别?它们似乎都具有相同的手册页man rename,man file-rename并且man prename都给我相同的页面。 我可以自己遍历这些脚本并尝试了解它们之间的差异,但这并不是不重要的,我希望有人能知道每个人都具有的其他人没有的功能。奖励点,用于解释为什么Debian世界需要三个独立的Perl重命名脚本。
24 debian  perl  rename 

1
用另一个文件的内容替换文件中的模式
我有一个文本文件(devel.xml)。 我在其中添加了单词REPLACETHIS,以便将该字符串替换为其他文件(temp.txt)中的内容。 我最接近的是: sed -i -e "/REPLACETHIS/r temp.TXT" -e "s///" devel.txt; 这会将内容插入字符串后,然后再删除字符串。 这是最好的方法吗?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.