我想选择第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/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)
这会将整个文件存储在数组中,只是为了跳过最后一行.我觉得应该有一种更简单(或更好)的方式来做到这一点.
(如果没有更简单,更快或更好的方法,我会删除这个问题)
谢谢.
我想就如何对大文件(数百万行或多行)进行子集化提供建议/帮助.
例如,
(1)我有大文件(数百万行,制表符分隔).我想要这个文件的一个子集,只有10000到100000的行.
(2)我有大文件(数百万列,制表符分隔).我想要这个文件的一个子集,只有10000到100000的列.
我知道有头,尾,切,分裂,awk或sed等工具.我可以用它们做简单的子集化.但是,我不知道该怎么做.
你能提出任何建议吗?提前致谢.
我正在尝试编写一个awk脚本来检查某些条件并丢弃符合这些条件的行.
具体条件是丢弃文件的前两行以及以文本开头的任何行xyzzy:.为此,我编写了:
awk '
NR < 2 {}
/^xyzzy:/ {}
{print}'
Run Code Online (Sandbox Code Playgroud)
我认为它会丢掉满足这两个条件之一的线条,否则就会打印出来.
不幸的是,print即使该线与其他两种模式中的一种相匹配,它似乎也在被处理.
是否有类似C的continue动作将在下一行移动而忽略当前行的所有其他条件检查?
我想我可以使用类似((NR > 1) && (!/^xyzzy:/)) {print}第三条规则的东西,但这对我来说似乎相当难看.
或者,还有另一种方法吗?
我有一个非常大的文件,我需要获取每个第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) 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)
为什么?
我想比较两个十进制值,但我收到错误.我用了
if [ "$(echo $result1 '>' $result2 | bc -l)" -eq 1 ];then
Run Code Online (Sandbox Code Playgroud)
正如其他Stack Overflow线程所建议的那样.
我收到了错误.
这是怎样的正确方法?
会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) 我想从管道分离文件中提取某个模式存在的子字符串,因此我使用下面的命令,
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命令?