标签: awk

用于计算数据文件中数字列表平均值的脚本

该文件data.txt包含以下内容:

1.00 1.23 54.4 213.2 3.4
Run Code Online (Sandbox Code Playgroud)

脚本的输出应该是:

ave: 54.646
Run Code Online (Sandbox Code Playgroud)

一些简单的脚本是首选.

bash awk sed

34
推荐指数
3
解决办法
3万
查看次数

将AWK结果分配给变量

这应该是非常直接的,我不知道为什么我在努力.

我在shell脚本中运行以下psql命令,以便在插入数据之前查明是否已删除所有索引.

INDEXCOUNT=$(psql -p $dbPort -U enterprisedb -d main_db -c "select Count(*) from all_indexes where index_schema = 'enterprisedb';")
Run Code Online (Sandbox Code Playgroud)

此时,INDEXCOUNT等于"COUNT ------- 0"

现在,如果我回应以下行,我得到我想要的结果 -

echo $INDEXCOUNT | awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)

如何$INDEXCOUNT | awk ‘{print $3}’为变量赋值以在"IF"语句中进行检查?

例如:

RETURNCOUNT=$INDEXCOUNT | awk '{print $3}'
Run Code Online (Sandbox Code Playgroud)

linux postgresql shell scripting awk

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

使用Awk从分隔文件中提取特定列

对不起,如果这太基础了.我有一个csv文件,其中列有一个标题行(v1,v2等).我知道要提取第1列和第2列,我必须这样做:awk -F "," '{print $1 "," $2}' infile.csv > outfile.csv.但是,如果我必须提取1到10,20到25和30,33列呢?作为附录,有没有办法直接提取标题名称而不是列号?

unix csv awk

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

使用BASH或awk或sed或其他方法删除文件的前两行

我试图删除文件的前两行,只是不打印到另一个文件.我不是在寻找一些奇特的东西.这是我在awk的尝试(失败):

awk '{ (NR > 2) {print} }' myfile
Run Code Online (Sandbox Code Playgroud)

抛出以下错误:

awk: { NR > 2 {print} }
awk:          ^ syntax error
Run Code Online (Sandbox Code Playgroud)

例:

'myfile'的内容:

blah
blahsdfsj
1 
2
3
4
Run Code Online (Sandbox Code Playgroud)

我想要的结果是:

1
2
3
4
Run Code Online (Sandbox Code Playgroud)

bash awk sed lines

33
推荐指数
4
解决办法
7万
查看次数

awk/Unix group by

有这个文本文件:

name, age
joe,42
jim,20
bob,15
mike,24
mike,15
mike,54
bob,21
Run Code Online (Sandbox Code Playgroud)

试图得到这个(数):

joe 1
jim 1
bob 2
mike 3
Run Code Online (Sandbox Code Playgroud)

谢谢,

unix awk

33
推荐指数
3
解决办法
4万
查看次数

将csv文件的第一列解析为新文件

操作系统:OSX方法:从命令行开始,所以使用sed,cut,gawk,虽然最好没有安装模块.

本质上我试图获取csv文件的第一列并将其解析为一个新文件.

示例输入文件

EXAMPLEfoo,60,6
EXAMPLEbar,30,6
EXAMPLE1,60,3
EXAMPLE2,120,6
EXAMPLE3,60,6
EXAMPLE4,30,6
Run Code Online (Sandbox Code Playgroud)

欲望输出

EXAMPLEfoo 
EXAMPLEbar
EXAMPLE1
EXAMPLE2
EXAMPLE3
EXAMPLE4
Run Code Online (Sandbox Code Playgroud)

所以我想要第一列.

这是我到目前为止所尝试的:

awk -F"," '{print $1}' in.csv > out.txt

awk -F"," '{for (i=2;i<=NF;i++)}' in.csv > out.txt

awk -F"," 'BEGIN { OFS="," }' '{print $1}' in.csv > out.txt

cat in.csv | cut -d \, -f 1 > out.txt
Run Code Online (Sandbox Code Playgroud)

似乎没有工作,他们只是打印第一行或根本没有,所以我认为它没有逐行阅读.

csv bash awk cut sed

32
推荐指数
3
解决办法
4万
查看次数

找出序号中的差距

如果这是一个简单的问题(或者比我想的更复杂),我不会这样做是为了生活,请原谅我.我一直在挖掘档案,发现很多技巧很接近,但是作为一个新手,我不知道如何调整我的需求,或者他们超出了我的理解.

我有一些大数据文件,我可以解析出来生成一个主要是顺序的坐标列表

5
6
7
8
15
16
17
25
26
27
Run Code Online (Sandbox Code Playgroud)

我想要的是一份差距清单

1-4
9-14
18-24
Run Code Online (Sandbox Code Playgroud)

我不知道perl,SQL或任何花哨的东西,但我想我可以做一些能从下一个中减去一个数字的东西.然后,我至少可以grep得到差异不是1-1的输出,并与之合作以获得差距.

bash awk

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

如何在列中格式化控制台输出

我有以下文本文件:

[master]$ cat output.txt 
CHAR.L  96.88   -6.75 (-6.49%)
MXP.L   12.62   -1.00 (-7.41%)
NEW.L   7.88    -0.75 (-8.57%)
AGQ.L   17.75   -0.62 (-3.40%)
RMP.L   13.12   -0.38 (-2.75%)
RRR.L   3.35    -0.20 (-5.71%)
RRL.L   7.95    -0.15 (-1.85%)
SOU.L   1.73    -0.10 (-5.22%)
YELL.L  5.47    -0.04 (-0.73%)
AMC.L   9.75    -0.01 (-0.05%)
PLU:USOP    95.40   0.00 (+0%)
BP-.L   452.10  0.95 (+0.21%)
SXX.L   29.00   1.50 (+5.41%)
LLOY.L  26.78   1.64 (+6.52%)
DES.L   23.62   2.25 (+10.34%)
GKP.L   171.62  4.50 (+2.69%)
XEL.L   83.75   5.00 (+6.33%)
BARC.L  190.57  9.80 (+5.43%)
RKH.L   251.62  12.00 (+5.02%) …
Run Code Online (Sandbox Code Playgroud)

linux terminal awk

31
推荐指数
3
解决办法
4万
查看次数

来自shell的GROUP BY/SUM

我有一个包含这样的数据的大文件:

a 23
b 8
a 22
b 1
Run Code Online (Sandbox Code Playgroud)

我希望能够得到这个:

a 45
b 9
Run Code Online (Sandbox Code Playgroud)

我可以先对这个文件进行排序,然后通过扫描文件一次在Python中进行.这样做有什么好的直接命令行方式?

unix linux shell awk command-line

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

grep + A:匹配后打印所有内容

嗨,我有一个文件包含网址列表,如下所示:

文件1:

http://www.google.com
http://www.bing.com
http://www.yahoo.com
http://www.baidu.com
http://www.yandex.com
....
Run Code Online (Sandbox Code Playgroud)

我希望获得以下所有记录:http://www.yahoo.com,结果如下所示:

文件2:

http://www.baidu.com
http://www.yandex.com
....
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用grep来查找yahoo.com所使用的行号

$grep -n 'http://www.yahoo.com' file1
3 http://www.yahoo.com
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何在第3行之后获取文件.另外,我知道grep中有一个标志 - 在匹配后打印行.但是,您需要在匹配后指定所需的行数.我想知道是否有什么可以解决这个问题.喜欢:

PSEUDO CODE:
$ grep -n 'http://www.yahoo.com' -A all file1 > file2 
Run Code Online (Sandbox Code Playgroud)

我知道我们可以使用我得到的行号和wc -l来获取yahoo.com之后的行数,但是感觉非常蹩脚.

期待一个方便易用的解决方案.请尽量批评我在开始时将问题复杂化,同时也欢迎使用awk和sed命令!

bash awk grep sed

31
推荐指数
3
解决办法
5万
查看次数

标签 统计

awk ×10

bash ×5

sed ×4

linux ×3

unix ×3

csv ×2

shell ×2

command-line ×1

cut ×1

grep ×1

lines ×1

postgresql ×1

scripting ×1

terminal ×1