我的 shell 脚本中有一个字符串,它采用固定格式:'[STATUS REPORT] PROJECT'. 当用户执行我的 shell 脚本时,他会被要求提供'PROJECT'.
我想'PROJECT'用用户提供的价值替换这个词。例如,如果'ABCD'是用户输入:
'[状态报告] ABCD'
我有两个问题: 1:如何处理项目名称中的“&”等特殊字符?例如:
echo "[STATUS REPORT] PROJECT" | awk '{ gsub(/PROJECT/, "A&A"); print }'
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
[状态报告] APROJECTA
2:我的实际 shell 语句如下所示:
echo "[STATUS REPORT] PROJECT" | awk '{ gsub(/PROJECT/, $ProjectName); print }'
Run Code Online (Sandbox Code Playgroud)
其中 $ProjectName 存储用户提供的项目名称。但这似乎不起作用
我怎样才能让它正常工作?
我有一个文本文件(实际上是 XML),我希望能够使用命令行进行更改。换句话说,作为 Windows 批处理的一部分,我想定位一个字符串(在本例中为 @@@@,它使用文件中其他任何地方都不存在的字符),然后用一些简单的东西替换它,例如日期 '8/18/11'。
是否有某种“grep”、“perl”或其他类型的方法可以在短时间内替换字符串——同样,这必须通过命令行,因为我想自动化这个过程。
顺便说一下,我的 PC 上有 Active State PERL。
如果我有:
foo
bar
Run Code Online (Sandbox Code Playgroud)
..我想awk/sed这个:
foo-bar
Run Code Online (Sandbox Code Playgroud)
..什么是语法?
我正在尝试在 OS X 10.6.x 上使用 System Profiler:
system_profiler SPMemoryDataType | awk '/Type/ {print $2} /Speed/ {print $2}'
Run Code Online (Sandbox Code Playgroud)
输出类型速度(即DDR-1067)。还没有想出如何使用print或printf尚未弄清楚如何做到这一点,可能会尝试grep改为..
我有以下 ldif:
dn: cn=Robert Smith,ou=people,dc=example,dc=com
objectclass: inetOrgPerson
cn: Robert Smith
cn: Robert J Smith
cn: bob smith
sn: smith
uid: rjsmith
userpassword: rJsmitH
carlicense: HISCAR 123
homephone: 555-111-2222
mail: r.smith@example.com
alias: rsmith@example.com
alias: bob.smith@example.com
description: nice hair
ou: Human Resources
dn: cn=John Doe,ou=people,dc=example,dc=com
objectclass: inetOrgPerson
cn: John Doe
cn: John Walker Doe
cn: Johnny
sn: Doe
uid: jdoe
userpassword: topsecret
carlicense: AKAHH 123
homephone: 123-458-362
mail: j.doe@example.com
alias: jdoe@example.com
alias: john.doe@example.com
description: cool guy
ou: Sales
Run Code Online (Sandbox Code Playgroud)
现在我正在针对它运行 awk 命令:
awk …Run Code Online (Sandbox Code Playgroud) 我想从file1.txt.
我将文本放入文件中tmp并执行以下操作:
grep -f tmp file.txt
Run Code Online (Sandbox Code Playgroud)
但它给我的只是区别。
问题是如何从file.txt.
我一直在尝试提取固件的内容并将其放入二进制文件,但没有成功。
我看到了正确的十六进制内容,但不确定如何将它们按位放入文件中。
objdump -s -j .text firmware.ko | 尾 -n +5 | awk '{print "dd if='firmware.ko' of='content.bin' bs=1 count=$["$2 $3 $4 $5 "]"}'
.csv 文件。
1,2,3,abc
2,3,4,def
3,4,5,abc
3,4,2,def
6,7,9,abc.
Run Code Online (Sandbox Code Playgroud)
我需要读取该文件并获取包含 abc 的文件行。
我有大约 2 TB 的数据文件格式如下
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/21/2015 somerandomdata
12/21/2015 somerandomdata
12/21/2015 somerandomdata
12/21/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
Run Code Online (Sandbox Code Playgroud)
我想删除某些日期。例如,我可能想为 12/20/2015 和 12/22/2015 生成文件。
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/20/2015 somerandomdata
12/20/2015 somerandomdata
Run Code Online (Sandbox Code Playgroud)
和
12/22/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
12/22/2015 somerandomdata
Run Code Online (Sandbox Code Playgroud)
我可以很容易地使用grep做到这一点,在linux做grep '12/20/2015' filein > fileout20和grep '12/22/2015' filein > fileout22,但这样做有两个问题。
首先,更重要的是,它需要遍历输入文件两次以生成输出。每个文件有 2 TB 数据和多个日期,这是一个重大问题。(相关:我也不希望解决方案将文件分解为每个可能的日期,因为我不想要大多数日期的数据,每个输入文件中只有大约 10%)
第二个问题是我需要在 Windows 上运行它。(我意识到大多数 linux 命令都具有使用 GnuWin32 等的 Windows 等价物,所以这不是什么大问题)
有什么方法可以有效地做到这一点吗?
编辑:到目前为止的答案有两个问题之一,所以我会澄清一点。第一个问题是我不想多次遍历每个输入文件。因此,循环遍历每个日期是行不通的。这是因为如果我有 200 …
我有一个 bash 脚本:
#!/bin/bash
gawk -f realmap.awk realmap.log | column -ts: > realmap.csv
gnuplot <<-_EOF_
set term png
set out 'realmap.png'
set xlabel 'index'
set ylabel 'bytes'
set style data lp
plot 'realmap.csv' u 1:2 t col, '' u 1:3 t col, '' u 1:4 t col, '' u 1:5 t col, '' u 1:6 t col, '' u 1:7 t col
_EOF_
rm realmap.csv
display realmap.png
Run Code Online (Sandbox Code Playgroud)
还有一个 awk 脚本:
#!/usr/bin/gawk -f
BEGIN{
printf("%s:%s:%s:%s:%s:%s:%s\n", "index", "total", "used", "free", "cached", "buffers", …Run Code Online (Sandbox Code Playgroud) 假设我有一些文件,表格中有一堆行
someString=someMoreCharacters
anotherString.blah=foo=bar
blah.blah.blah=foo.bar.=foobar
Run Code Online (Sandbox Code Playgroud)
期望输出
someString
anotherString.blah
blah.blah.blah
Run Code Online (Sandbox Code Playgroud)
我想使用 awk 来提取从行首开始并一直向上直到但不包括第一个等号的子字符串。我希望能够将此输出通过管道传输到 xargs。