Questions tagged «scripting»

脚本是由解释程序执行而不是编译为独立可执行程序的命令或指令序列。

8
按内容查找重复的PDF文件
有些期刊为每次下载生成不同的PDF。例如,APS 将时间和IP地址存储在PDF中。 或者有纸质版本带有超级链接,而文本版本带有文本引用。 如何通过使用开源软件在Linux系统上找到内容相等于90%的论文的重复下载? 我一直在考虑使用来将PDF文件转换为临时目录中的纯文本pdf2txt。然后,我可以过滤所有文件名,diff a b结果超过x行。但这一点都不优雅,并且在扫描出版物时会失败。期刊通常不提供旧出版物的OCR文本。 我也在compareImageMagick套件中进行了尝试,但是使用此工具无法处理多页PDF文件。 diffpdf 2.1.1在两个文件的GUI中做得很好,但我不知道如何将其应用于许多文件,并且在任何开放源代码许可下都无法使用最新版本。


1
将.docx文件转换为纯文本并保留换行符以维护对源文档的行号引用:howto和含义?
我正在将MS Word内容导出为纯文本,以便与文本和文件实用程序一起使用。我有一个约束,其中在MS软件中已启用行编号功能,并且最终输出中对行编号的任何引用都必须与该编号匹配。因此输入“编号行”: (EA坡) 显然,对于Word来说,这种编号不会在换行符处打断行,而是在右边距(或其他位置)后打断“行” 。像这样的脚本docx2txt,默认情况下似乎并没有解决这个问题,并在换行符处换行。因此,如果我使用grep -n编号,则行将与源行号功能不匹配,如上所示。从文档中还不清楚,在这种情况下,我将需要如何编辑Perl脚本来转换文件: our $config_newLine = "\n"; # Alternative is "\r\n". our $config_lineWidth = 80; # Line width, used for short line justification. 我尝试替代\n,\r\n但这似乎对我不起作用。因此,我采取了以下设置(在v.2013,64pc上另存为纯文本格式)直接从Word导出文档: Unicode(UTF-8) 用(CR / LF)插入换行符+结束行 允许字符替换 现在的确,当我使用这些.txt文件时,源编号功能中的行号与grep -n输出之间的匹配非常完美。 是否有任何我应该了解的特定配置/过程docx2txt或类似的命令行实用程序,该实用程序可以让我将.docx文件转换为纯文本,同时保留换行符,而无需像以前那样依靠Word? 关于换行符和格式设置,将MS Word文档(可能包含重音符号)导出为纯文本以与文件/文本实用程序一起使用的最佳实践是什么;我为导出选择的设置是否有负面影响,即插入CR / LF? 样品 根据建议,我提供了一个示例。在这个rar 档案中,我将.docx文件与简单的段落捆绑在一起,并将其导出的.txt文件使用Word与上述选项捆绑在一起。可以将后者与docx2txt源文件的默认运行进行比较。

3
如何编写使用整个设备的单个分区的脚本?
我专门使用它在Amazon EC2实例上分区和挂载EBS卷,但实际上,这通常应适用于初始化任何新驱动器。 如问题所述,我想编写一个脚本来创建单个主分区,该分区使用给定设备上的所有可用空间。我不会提前知道设备有多大,而且可能会非常大(即几TB)。 在研究这方面,似乎parted是用于脚本编写的最佳命令。我认为parted /dev/sdf mkpart primary 0 END是我想要的东西,但是我很难确定一种优雅的方法来确定END应该是什么。有人知道这样做的简单方法吗?

5
如何在仅具有根写许可权的文件中添加一行并继续执行脚本
我正在尝试学习bash脚本。我正在处理一个实际问题,有一次我需要在需要root写入权限的文件中添加一行。 代码如下: # some code echo "add this line to the code" >> fileName # some code 是否有可能使脚本要求输入root密码,验证密码,并在成功身份验证后修改文件?然后,脚本应返回到用户模式并继续执行命令。

1
使用陷阱确认退出
我正在尝试捕获Ctrl+C要求用户确认的信号。捕获部分工作正常。但是一旦捕获到信号,它就不会返回正常执行。而是,它退出脚本。用户按下否时如何使它恢复执行。 这是我的代码 hell() { echo "Do you want to quit? Press 1 for yes and 0 for no"; read n; if [ $n == 1 ]; then exit 1; fi } trap "hell" SIGINT find /

7
如何通过ssh以批处理模式运行命令?
如何通过ssh以批处理模式运行命令?也就是说,该ssh命令的等效项是sftp -b <filename> <hostname>什么? 我有一组命令,它们希望跨连接的一组主机运行ssh。在上方sftp,我将命令存储在文件中,filename并连接到主机,然后使用前面提到的命令运行命令。 这样的事情可能结束ssh吗?

2
在没有子shell的情况下遍历bash中命令的输出
我想遍历命令的输出而不创建子外壳或使用临时文件。 我的脚本的初始版本看起来像这样,但这不起作用,因为它创建了一个子外壳,并且该exit命令终止了该子外壳,而不是所需的主脚本。它是配置策略路由的更大脚本的一部分,如果它检测到会导致路由失败的条件,则将暂停执行。 sysctl -a 2>/dev/null | grep '\.rp_filter' | while read -r -a RPSTAT ; do if [[ "0" != "${RPSTAT[2]}" ]] ; then echo >&2 "RP Filter must be disabled on all interfaces!" echo >&2 "The RP filter feature is incompatible with policy routing" exit 1 fi done 因此,建议的替代方法之一是使用类似这样的命令来避免子外壳。 …

1
在sed或awk中替换多行[关闭]
已关闭。这个问题需要细节或说明。它当前不接受答案。 想改善这个问题吗?添加详细信息并通过编辑此帖子来澄清问题。 5年前关闭。 我正在尝试使用sed或awk替换smb文件中的5行,但是我只是不知道如何处理换行符。
9 sed  awk  scripting  perl 

6
如何检查当前时间是否在23:00和06:30之间
如果当前时间在23:00到06:30之间,我很难掌握如何正确地从bash脚本中进行检查。我试图运行一个无限循环以检查现在的时间,并且如果时间范围在晚上11点至早上6:30之间,则需要执行一些操作。这是到目前为止我写的,第二天不起作用: fireup() { local starttime=$(date --date="23:00" +"%s") local endtime=$(date --date="06:30" +"%s") while :; do local currenttime=$(date +%s) if [ "$currenttime" -ge "$starttime" -a "$currenttime" -ge "$endtime" ]; then do_something else do_something_else fi test "$?" -gt 128 && break local currenttime=$(date +%s) done & } 我做错了什么?
9 scripting  date 

1
bash,并期望在同一脚本中?
我正在尝试编写一个脚本,该脚本从.csv文件中获取IP地址并通过telnet设备以捕获“显示版本”命令输出。 到目前为止,我已经对此进行了编码: #!/bin/bash #!/usr/bin/expect -f FILE1=dispositivos.csv #file with IP's and device name set Username "user" #this is the user for telnet connection. set Password "this.is.the.pass" #pass for telnet connection. NUMERODISP="$(wc -l $FILE1 | awk '{print $1}')" #this command counts number of devices (IP's) in the file as it is a …

4
测试音频设备/声卡当前是否正在播放?
是否有一个默认程序,我可以在其中检查音频设备是否处于静音状态? 编辑:通过沉默,我的意思是如果那上面正在播放某些东西(不仅仅是激活或打开) 像这样: if [[ device0 is silent ]] ; then radio $RANDOM fi 编辑2:我要实现的是一个脚本,该脚本可以播放广播,并且可以在播放器出现故障时继续播放,例如,如果互联网连接断开并且播放器没有恢复,我将杀死播放器并重新开始

2
sed:替换数字
我正在尝试为我安装/升级Ubuntu时编写一些安装脚本。我在解决问题logrotate.d: /var/log/ufw.log { rotate 7 weekly missingok notifempty compress delaycompress sharedscripts postrotate reload rsyslog >/dev/null 2>&1 || true endscript } 我想更改rotate nnn为rotate 99。必须使nnn为任意位数(通常为1或2),但不影响该postrotate行。 我已经尝试了这两个,但是我都不需要(并且我用nnn是1,2或3位数字进行了测试)。 sudo sed 's/rotate[0-9]*/rotate 99/' /etc/logrotate.d/ufw sudo sed 's/^rotate[0-9]/rotate 99/' /etc/logrotate.d/ufw


2
每当ansible在CentOS7中对sshd进行更改时,将来的随机播放都无法连接
现在,这已经是一个令人烦恼的问题,以至于我以为我最终会问整个社区,可能的解决方案是什么。更令人讨厌的是,我似乎是唯一遇到此问题的人。 本质上,任何时候只要在CentOS 7.x中修改sshd配置或sshd的任何部分,并且在接下来的3分钟内某个“随机点”重新启动/重新加载守护程序,ssh连接都会全部重置,然后该服务器即通过ssh几秒钟无法到达。 这对于ansible尤其是一个问题,因为它有时需要自己对sshd进行这些更改,然后重新加载它(例如在新的CentOS 7x服务器版本中)。但是后来在播放时,它只是随机地无法连接到ssh,并且它炸毁了该主机的其余剧本/剧本,但未能与之联系。这对于大型主机模式尤其不利,因为少数主机模式会随机完成,但其他主机在操作sshd之后会在剧本的各个阶段失败。值得注意的是,在CentOS 5x,6x或什至在Solaris上都没有发生这种情况。 为了避免这种情况,我能做的最好的办法是在对sshd进行任何更改后创建90秒的等待时间,即使这样也不是很简单。即使被调用7至8次,这些书也需要20分钟以上才能运行。 有关此环境的一些事实: 所有新安装均来自官方ISO DVD。每个服务器都是hyper-v 2012来宾,每个有此问题的服务器都是CentOS 7.x 这是问题的一些实际输出以及一些棘手的解决方案: 失败: fatal: [voltron]: UNREACHABLE! => {"changed": false, "msg": "All items completed", "results": [{"_ansible_item_result": true, "item": ["rsync", "iotop", "bind-utils", "sysstat.x86_64", "lsof"], "msg": "Failed to connect to the host via ssh: Shared connection to voltron closed.\r\n", "unreachable": true}]} sshd更改之一的示例: …

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.