我对linux/bash相当陌生,而且我在从文本文件中的特定列中打印两个值(最高值和最低值)时遇到了困难。文件的格式如下:
Geoff Audi 2:22:35.227
Bob Mercedes 1:24:22.338
Derek Jaguar 1:19:77.693
Dave Ferrari 1:08:22.921
正如您可以看到的,最后一列是一个计时,我试图使用awk打印出列中的最高和最低的时间。我真的很困惑,我试过:
awk '{print sort -n
sed -n '/pattern1/,/pattern2/p'
pattern1
a
b
pattern2
cd
pattern1
ef
pattern2
gh
pattern1
ef
pattern2
这将在所有匹配的pattern1和pattern2之间生成输出。
但是,如何选择打印哪个块,比如只打印最后一个匹配的模式块,还是只打印第一个匹配的模式块?
我知道用sed我可以打印
cat current.txt | sed 'N;s/\n/,/' > new.txt
A
B
C
D
E
F
至
A,B
C,D
E,F
我想做的是:
A
B
C
D
E
F
至
A,D
B,E
C,F
我想加入1与4,2与5,3与6,等等。这和sed有可能吗?知道怎么才能实现吗?
谢谢。
我有一个包含4列的文件,如:
A B C D
1 2 3 4
10 20 30 40
100 200 300 400
.
.
.
我可以计算B到D列相对于A列的梯度,例如以下命令:
NR>1{print $0,($2-b)/($1-a)}{a=$1;b=$2}' file
如何打印渐变和作为文件中的第5列?其结果应是:
A B C D sum
1 2 3 4 1+2+3+4=10
10 20 30 40 (20-2)/(10-1)+(30-3)/(10-1)+(40-4)/(10-1)=9
100 200 300 400 (200-20)/(100-10)
需要帮助在这方面我正在创建一个脚本,将分析一个文件,并希望使用Awk打印2信息在一个输出txt文件中我能够打印的信息没有人在我的屏幕上寻找,但如何打印相同的Awk另一个信息(例如,我的文件的行数分析),并输出这两个信息在一个文件调用test.txt我尝试了这个代码和代码错误或:操作员预期
#!/usr/bin/perl
if ($#ARGV ==-1)
{
print "Saisissez un nom de fichier a nalyser \n";
}
else
{
$fname = $ARGV[0];
open(FILE, $fname) ||
因此,我处理了一个文件的最后100个记录,使用wc -l声明一个变量,但是我很难让awk的子部分做我想做的事情。
下面的文字只是一个例子,但它确实帮助我把重点放在桌面上。
gold 1 1986 USA American Eagle
gold 1 1908 Austria-Hungary Franz Josef 100 Korona
silver 10 1981 USA ingot
gold 1 1984 Switzerland ingot
gold
让awk存储搜索到的模式以及在数组中找到它的行的最佳解决方案是什么?我需要一个shell脚本吗?或者只使用awk就可以完成。
举个例子,如果我搜索“吉他”这个词,它会生成一个数组,这个数组包含了这个词是在第13、18和89行找到的信息。
awk '/home/ {
array[$0] = NR
}
END {
for(i in array) print i, array[i] }' 1-1000.txt
例如,这将打印与找到它们的位置编号相匹配的行。但我不需要$0,而需要那个'home‘模式,作为关联数组的索引,它将把行作为值保存。但话又说回来,如何让一个索引有多个值
我想从我的爆炸结果中提取命中I和无命中I。
例如,我的blast输出包含:
> Query= TRINITY_DN109574_c0_g1_i1
Length=277
***** No hits found *****
Lambda K H a alpha
0.318 0.134 0.401 0.792 4.96
Gapped
Lambda K H a alpha sigma
0.267 0.0410 0.140 1