标签: awk

Shell:查找和替换单词

我的 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 存储用户提供的项目名称。但这似乎不起作用

我怎样才能让它正常工作?

bash awk shell-script string-manipulation

2
推荐指数
1
解决办法
1万
查看次数

SW 替换 Windows 中的字符串

我有一个文本文件(实际上是 XML),我希望能够使用命令行进行更改。换句话说,作为 Windows 批处理的一部分,我想定位一个字符串(在本例中为 @@@@,它使用文件中其他任何地方都不存在的字符),然后用一些简单的东西替换它,例如日期 '8/18/11'。

是否有某种“grep”、“perl”或其他类型的方法可以在短时间内替换字符串——同样,这必须通过命令行,因为我想自动化这个过程。

顺便说一下,我的 PC 上有 Active State PERL。

windows grep regex perl awk

2
推荐指数
1
解决办法
684
查看次数

用 awk 或 sed 连接两行

如果我有:

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)。还没有想出如何使用printprintf尚未弄清楚如何做到这一点,可能会尝试grep改为..

bash awk sed macos

2
推荐指数
1
解决办法
3864
查看次数

为什么 awk 不止一次打印这条线?

我有以下 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)

awk ldif

2
推荐指数
1
解决办法
747
查看次数

从文件中删除文本

我想从file1.txt.

我将文本放入文件中tmp并执行以下操作:

grep -f tmp file.txt
Run Code Online (Sandbox Code Playgroud)

但它给我的只是区别。

问题是如何从file.txt.

linux grep awk sed

2
推荐指数
2
解决办法
6万
查看次数

提取ELF的内容并写入二进制文件

我一直在尝试提取固件的内容并将其放入二进制文件,但没有成功。

我看到了正确的十六进制内容,但不确定如何将它们按位放入文件中。

objdump -s -j .text firmware.ko | 尾 -n +5 | awk '{print "dd if='firmware.ko' of='content.bin' bs=1 count=$["$2 $3 $4 $5 "]"}'

linux awk dd tail binary-files

2
推荐指数
1
解决办法
2万
查看次数

grep 文件中的字符串行

.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 的文件行。

grep csv awk

2
推荐指数
1
解决办法
1646
查看次数

基于列Windows的大文件过滤拆分

我有大约 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 > fileout20grep '12/22/2015' filein > fileout22,但这样做有两个问题。

首先,更重要的是,它需要遍历输入文件两次以生成输出。每个文件有 2 TB 数据和多个日期,这是一个重大问题。(相关:我也不希望解决方案将文件分解为每个可能的日期,因为我不想要大多数日期的数据,每个输入文件中只有大约 10%)

第二个问题是我需要在 Windows 上运行它。(我意识到大多数 linux 命令都具有使用 GnuWin32 等的 Windows 等价物,所以这不是什么大问题)

有什么方法可以有效地做到这一点吗?

编辑:到目前为止的答案有两个问题之一,所以我会澄清一点。第一个问题是我不想多次遍历每个输入文件。因此,循环遍历每个日期是行不通的。这是因为如果我有 200 …

windows grep awk

2
推荐指数
1
解决办法
2243
查看次数

如何编写`awk here document`

我有一个 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)

awk

1
推荐指数
1
解决办法
5337
查看次数

使用awk在=符号之前提取子字符串

假设我有一些文件,表格中有一堆行

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。

regex awk

1
推荐指数
1
解决办法
2万
查看次数

标签 统计

awk ×10

grep ×4

bash ×2

linux ×2

regex ×2

sed ×2

windows ×2

binary-files ×1

csv ×1

dd ×1

ldif ×1

macos ×1

perl ×1

shell-script ×1

string-manipulation ×1

tail ×1