我正在寻找一个命令,它将接受多行文本作为输入,每行包含一个整数,并输出这些整数的总和.
作为一个背景,我有一个日志文件,其中包括时序测量,所以通过grepping相关的行,并稍微sed重新格式化,我可以列出该文件中的所有时间.然而,我想计算出总数,而且我的思绪已经变得空白,因为任何命令我都可以将这个中间输出传递到最终总和.我过去总是使用expr它,但除非它运行在sed我认为它不会应付这个(即使那样它也会很棘手).
我错过了什么?鉴于可能有多种方法可以实现这一点,我将很乐意阅读(和expr)任何有效的方法,即使其他人已经发布了一个不同的解决方案来完成这项工作.
相关问题:在Unix上计算一列输出总和的最短命令?(来自@Andrew)
更新:哇,正如所料,这里有一些不错的答案.看起来我一定要进行sed更深入的检查expr!
如何在bash脚本中获取当前工作目录名称,甚至更好,只需一个终端命令.
pwd给出了当前工作目录的完整路径,例如/opt/local/bin但我只想要bin
是否有一个简单的shell命令/脚本支持排除某些文件/文件夹被存档?
我有一个目录需要使用子目录进行存档,该子目录包含许多我不需要备份的非常大的文件.
不完全解决方案:
该tar --exclude=PATTERN命令与给定模式匹配并排除这些文件,但我需要忽略特定文件和文件夹(完整文件路径),否则可能会排除有效文件.
我还可以使用find命令创建文件列表并排除我不想存档的文件并将列表传递给tar,但这仅适用于少量文件.我有成千上万.
我开始认为唯一的解决方案是创建一个文件,其中包含要排除的文件/文件夹列表,然后使用rsync --exclude-from=file将所有文件复制到tmp目录,然后使用tar来存档该目录.
谁能想到更好/更有效的解决方案?
编辑:cma的解决方案效果很好.最重要的是--exclude='./folder' 必须在tar命令的开头.完整命令(cd首先,所以备份是相对于该目录):
cd /folder_to_backup
tar --exclude='./folder' --exclude='./upload/folder2' -zcvf /backup/filename.tgz .
Run Code Online (Sandbox Code Playgroud) 我正在寻找foo=目录树中的文本文件中的字符串.它在一台普通的Linux机器上,我有bash shell:
grep -ircl "foo=" *
Run Code Online (Sandbox Code Playgroud)
在目录中还有许多匹配"foo ="的二进制文件.由于这些结果不相关并且减慢了搜索速度,我希望grep跳过搜索这些文件(主要是JPEG和PNG图像).我该怎么办?
我知道有--exclude=PATTERN和--include=PATTERN选项,但模式格式是什么?grep的手册页说:
--include=PATTERN Recurse in directories only searching file matching PATTERN.
--exclude=PATTERN Recurse in directories skip file matching PATTERN.
Run Code Online (Sandbox Code Playgroud)
搜索grep include,grep include exclude,grep exclude和variants没有找到任何相关内容
如果有一种更好的方法只在某些文件中进行grepping,我就是全力以赴; 移动违规文件不是一种选择.我不能只搜索某些目录(目录结构很乱,随处可见).另外,我无法安装任何东西,所以我必须使用常用工具(如grep或建议的查找).
如果我想找到两个目录树之间的差异,我通常只执行:
diff -r dir1/ dir2/
Run Code Online (Sandbox Code Playgroud)
这准确地输出了相应文件之间的差异.我有兴趣只获取内容不同的相应文件列表.我假设这只是一个传递命令行选项的问题diff,但我在手册页上找不到任何内容.
有什么建议?
我应该把shebang放在我的Python脚本中吗?以什么形式?
#!/usr/bin/env python
Run Code Online (Sandbox Code Playgroud)
要么
#!/usr/local/bin/python
Run Code Online (Sandbox Code Playgroud)
这些同样便携吗?哪种形式最常用?
我正在尝试编写一个小脚本来将当前目录更改为我的项目目录:
#!/bin/bash
cd /home/tree/projects/java
Run Code Online (Sandbox Code Playgroud)
我将此文件保存为proj,添加了执行权限chmod,并将其复制到/usr/bin.当我通过以下方式调用它时
proj,它什么都不做.我究竟做错了什么?
我如何计算git存储库中所有文件中存在的总行数?
git ls-files 给我一个git跟踪的文件列表.
我正在寻找cat所有这些文件的命令.就像是
git ls-files | [cat all these files] | wc -l
Run Code Online (Sandbox Code Playgroud) 我有"我爱Suzi和Marry",我想把"Suzi"改为"Sara".
#!/bin/bash
firstString="I love Suzi and Marry"
secondString="Sara"
# do something...
Run Code Online (Sandbox Code Playgroud)
结果必须是这样的:
firstString="I love Sara and Marry"
Run Code Online (Sandbox Code Playgroud) 我从命令行使用Git,并尝试在提交消息(使用git commit -m "")中添加换行符而不进入Vim.
这可能吗?
shell ×10
bash ×5
linux ×3
git ×2
unix ×2
archive ×1
command-line ×1
diff ×1
grep ×1
line-count ×1
python ×1
python-3.x ×1
search ×1
shebang ×1
tar ×1