标签: awk

awk中的绝对值不起作用?

我想选择第9列的绝对值小于500的文件行.列有时是正数,有时是负数.

awk -F'\t' '{ if ($9 < |500|) {print $0} }' > output.bam
Run Code Online (Sandbox Code Playgroud)

到目前为止这不起作用..互联网上的一轮告诉我要使用我们应该添加的绝对值

func abs(x) { return (x<0) ? x*-1 : x }
Run Code Online (Sandbox Code Playgroud)

那我怎么想把它与第9列的值一起?我不知道什么是正确的语法..

awk absolute

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

使用awk从文件中删除第一行和最后一行的最简单方法是什么?

我正在学习awk/gawk.所以最近我只是尝试解决它的任何问题,以获得更多的练习机会.

我的同事昨天问了一个问题,

"如何从文件中删除第一行和最后一行"

.我知道那sed '1d;$d' file会有用.head/tail即使性能不佳也行得通.我告诉他sed,他很高兴.

后来,我试图写一个awk单行:到目前为止,我得到的是:

awk 'NR>1{a[++k]=$0}END{for(i=1;i<k;i++)print a[i]}'
Run Code Online (Sandbox Code Playgroud)

这会将整个文件存储在数组中,只是为了跳过最后一行.我觉得应该有一种更简单(或更好)的方式来做到这一点.

(如果没有更简单,更快或更好的方法,我会删除这个问题)

谢谢.

awk

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

使用sed/awk打印具有匹配模式或其他匹配模式的行

我需要使用在匹配模式不同模式的文件中打印行.我觉得这是一件容易的事,但我似乎无法找到答案.有任何想法吗?

bash awk sed

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

如何对文件进行子集化 - 选择多个行或列

我想就如何对大文件(数百万行或多行)进行子集化提供建议/帮助.

例如,

(1)我有大文件(数百万行,制表符分隔).我想要这个文件的一个子集,只有10000到100000的行.

(2)我有大文件(数百万列,制表符分隔).我想要这个文件的一个子集,只有10000到100000的列.

我知道有头,尾,切,分裂,awk或sed等工具.我可以用它们做简单的子集化.但是,我不知道该怎么做.

你能提出任何建议吗?提前致谢.

unix linux awk cut sed

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

当一个条件被采取行动时,你如何获得进入下一行的awk?

我正在尝试编写一个awk脚本来检查某些条件并丢弃符合这些条件的行.

具体条件是丢弃文件的前两行以及以文本开头的任何行xyzzy:.为此,我编写了:

awk '
    NR < 2    {}
    /^xyzzy:/ {}
              {print}'
Run Code Online (Sandbox Code Playgroud)

我认为它会丢掉满足这两个条件之一的线条,否则就会打印出来.

不幸的是,print即使该线与其他两种模式中的一种相匹配,它似乎也在被处理.

是否有类似C的continue动作将在下一行移动而忽略当前行的所有其他条件检查?

我想我可以使用类似((NR > 1) && (!/^xyzzy:/)) {print}第三条规则的东西,但这对我来说似乎相当难看.

或者,还有另一种方法吗?

awk

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

使用gawk将每第n行打印成一行

我有一个非常大的文件,我需要获取每个第n行并将其打印成一行.

我的数据:

1      937  4.320194
2      667  4.913314
3      934  1.783326
4      940  -0.299312
5      939  2.309559
6      936  3.229496
7      611  -1.41808
8      608  -1.154019
9      606  2.159683
10     549  0.767828
Run Code Online (Sandbox Code Playgroud)

我希望我的数据看起来像这样:

1      937  4.320194
3      934  1.783326
5      939  2.309559
7      611  -1.41808
9      606  2.159683
Run Code Online (Sandbox Code Playgroud)

这当然是一个例子,我想要我的巨大数据文件的每10行.到目前为止我试过这个:

 NF == 6 {
     if(NR%10) {print;}
     }
Run Code Online (Sandbox Code Playgroud)

printing awk line gawk

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

如果发生其他问题,请回复

Bash将箭头指向"其他",并在挑衅的呜呜声中说出"语法错误".

awk '{if($3 != 0) a = ($3/$4) print $0, a; else if($3==0) print $0, "-" }' file > out
Run Code Online (Sandbox Code Playgroud)

为什么?

syntax awk if-statement

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

如何比较bash/awk中的两个十进制数?

我想比较两个十进制值,但我收到错误.我用了

if [ "$(echo $result1 '>' $result2 | bc -l)" -eq 1 ];then
Run Code Online (Sandbox Code Playgroud)

正如其他Stack Overflow线程所建议的那样.

我收到了错误.

这是怎样的正确方法?

bash shell awk

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

使用awk对齐文本文件中的列?

awk是"输入"转换为"所需的输出"有用吗?

输入

testing speed of encryption
test 0 (64 bit key, 16 byte blocks): 2250265 operations in 1 seconds (36004240 bytes)
test 1 (128 bit key, 64 byte blocks): 879149 operations in 1 seconds (56265536 bytes)
test 2 (128 bit key, 256 byte blocks): 258978 operations in 1 seconds (66298368 bytes)
test 3 (128 bit key, 1024 byte blocks): 68218 operations in 1 seconds (69855232 bytes)
test 4 (128 bit key, 8192 byte blocks): 8614 operations in 1 …
Run Code Online (Sandbox Code Playgroud)

linux bash awk

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

如何匹配awk中变量中给出的模式?

我想从管道分离文件中提取某个模式存在的子字符串,因此我使用下面的命令,

awk -F ":" '/REWARD REQ. SERVER HEADERS/{print $1, $2, $3, $4}' sample_profile.txt
Run Code Online (Sandbox Code Playgroud)

在这里,'REWARD REQ.SERVER HEADERS'是一个要在文件中搜索的模式,并在冒号分隔的行上打印其前4个部分.

现在,我想发送bash变量作为模式.因此我使用下面的命令,但它不起作用.

awk -v pat="$pattern" -F ":" '/pat/{print $1, $2 , $3, $4 } sample_profile.txt
Run Code Online (Sandbox Code Playgroud)

如何使用-v-F在一个单一的awk命令?

regex bash shell awk substring

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

标签 统计

awk ×10

bash ×4

linux ×2

sed ×2

shell ×2

absolute ×1

cut ×1

gawk ×1

if-statement ×1

line ×1

printing ×1

regex ×1

substring ×1

syntax ×1

unix ×1