这可能是许多常见问题解答 - 而不是使用:
cat file | command
Run Code Online (Sandbox Code Playgroud)
(这被称为无用的猫),正确的方式应该是:
command < file
Run Code Online (Sandbox Code Playgroud)
在第二,"正确"的方式 - 操作系统不必产生额外的过程.
尽管知道这一点,我继续使用无用的猫有两个原因.
更美观 - 我喜欢数据仅从左到右均匀移动.而且它更容易更换cat别的东西(gzcat,echo,...),添加第二个文件或插入新的过滤器(pv,mbuffer,grep...).
我"觉得"在某些情况下可能会更快.更快,因为有2个进程,1st(cat)执行读取而第二个执行任何操作.它们可以并行运行,这意味着有时可以更快地执行.
我的逻辑是否正确(第二个原因)?
我有一个看起来像这样的文件:
<table name="content_analyzer" primary-key="id">
<type="global" />
</table>
<table name="content_analyzer2" primary-key="id">
<type="global" />
</table>
<table name="content_analyzer_items" primary-key="id">
<type="global" />
</table>
Run Code Online (Sandbox Code Playgroud)
我需要在后面的引号中提取任何内容name=,即content_analyzer,content_analyzer2和content_analyzer_items.
我在Linux机器上这样做,所以使用sed,perl,grep或bash的解决方案很好.
我有一个看起来像这样的字符串:
GenFiltEff=7.092200e-01
Run Code Online (Sandbox Code Playgroud)
使用bash,我想在=角色后面得到数字.有没有办法做到这一点?
以下是内容:
Subject:
Security ID: S-1-5-21-3368353891-1012177287-890106238-22451
Account Name: ChamaraKer
Account Domain: JIC
Logon ID: 0x1fffb
Object:
Object Server: Security
Object Type: File
Object Name: D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log
Handle ID: 0x11dc
Run Code Online (Sandbox Code Playgroud)
我需要捕捉该行中单词之后的Object Name:单词.这是D:\ApacheTomcat\apache-tomcat-6.0.36\logs\localhost.2013-07-01.log.我希望有人可以帮助我.
^.*\bObject Name\b.*$ 匹配 - 对象名称
我有一些我想用cURL测试的API.我尝试按如下方式进行GET:
curl --user username:password --request GET http://my_domain/get_result/52d6428f3ea9a008358ad2d8/
Run Code Online (Sandbox Code Playgroud)
在服务器上,它显示'302'(这意味着重定向,对吧?).我猜它被重定向到'login /'页面.
完成这项工作的正确方法是什么?
编辑:我试过:
curl -c cookies.txt -b cookies.txt -L -d @login_form.txt http://my_domain/login/
Run Code Online (Sandbox Code Playgroud)
其中login_form.txt包含"username = username&password = password&this_is_the_login_form = 1".不行.没有生成cookies.txt文件.并且没有登录发生.你能告诉我你是如何使用cURL登录Django的吗?
如何在Linux(csh)中提取特定单词后面的单词?更确切地说,我有一个文件,其中包含一行,如下所示:
[some useless data] --pe_cnt 100 --rd_cnt 1000 [some more data]Run Code Online (Sandbox Code Playgroud)
我想提取单词100之后的数字--pe_cnt.我不能使用sed,只有当你想要提取整行时才能使用.也许我可以使用awk?
此外,我有多个文件具有不同的值而不是100所以我需要一些提取值但不依赖于值的东西.
一个简单的测试脚本:
while read LINE; do
LINECOUNT=$(($LINECOUNT+1))
if [[ $(($LINECOUNT % 1000)) -eq 0 ]]; then echo $LINECOUNT; fi
done
Run Code Online (Sandbox Code Playgroud)
当我这样做时cat my450klinefile.txt | myscript,CPU锁定为100%,并且每秒可以处理大约1000行.大约5分钟处理cat my450klinefile.txt >/dev/null半秒钟的事情.
有没有更有效的方法来实现这一点.我只需要从stdin读取一行,计算字节数,然后将其写入命名管道.但即便是这个例子的速度也很慢.
每1Gb的输入行我需要做一些更复杂的脚本操作(关闭并打开一些数据被输入的管道).
我正在使用grep,我想在我指定的字符串后获取数据.我希望在我指定之后得到字符串.如果我grep"label:"我得到"label:blue label:red label:green".我想得到的颜色.如果我说grep -o我得到所有的标签.如果我说-l它说(标准输出).任何的想法?
例如,假设我有logfile.txt,其中包含"这是一个示例文本文件"
我的模式是"样本"如何在logfile.txt中获取示例旁边的单词.
我希望能够运行命令以从属性文件中获取属性。所以如果我的属性文件是 property.props 并且有
username=dsollen
password=letMeIn
linux-skills=newb
Run Code Online (Sandbox Code Playgroud)
我想有一种快速的方法来拉出属性以管道到其他命令。所以
./myProgram -v -p `getProp property.props password`
Run Code Online (Sandbox Code Playgroud)
或类似的东西; 不确定我使用的是正确的,但这是一个不同的 newb linux 问题供以后使用 :)
我知道我可以用 grep 和 cut/awk/sed/whatever 的组合来做到这一点,但我想知道是否有一个已经存在的工具“知道”如何读取常见的属性文件格式并执行类似的操作?如果没有,我可以写一些东西添加到我的脚本文件夹中,如果已经存在更好的轮子,就不想重新发明轮子。
创建 Bash 脚本时,我总是在开头有一行定义PATH环境变量。我最近发现这并不能使脚本非常可移植,因为PATH不同版本的 Linux 的变量是不同的(在我的例子中,我将脚本从 Arch Linux 移动到 Ubuntu 并收到错误,因为各种可执行文件不在同一位置)。
是否可以将PATH登录 shell 定义的环境变量复制到当前的 Bash 脚本中?
编辑:
我发现我的问题引起了一些混乱,导致一些人认为我想PATH用 bash 脚本更改登录 shell 的环境变量,这与我想要的完全相反。
这是我目前在我的 Bash 脚本之一顶部的内容:
#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/usr/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl
# Test if an internet connection is present
wget -O /dev/null google.com
Run Code Online (Sandbox Code Playgroud)
我想将第二行替换为将登录 shell的值复制到脚本环境中的内容:PATH
#!/bin/bash
PATH=$(command that copies value of PATH from login shell)
# Test if an internet connection is present
wget -O /dev/null google.com
Run Code Online (Sandbox Code Playgroud)
编辑2:很抱歉我的重大遗漏。我忘了提及,相关脚本正在通过 cron 按计划运行。Cron …
我有 .env 文件,我正在尝试从中解析值。
我跑了这个
cat .env | grep PORT=
我有
PORT=3333
如何获取特定键的值?