假设在linux中有一个文件,它的行用空格分隔。
例如:
This is linux file
This is linux text
This is linux file 1
This is linux file 3
现在我只想打印那些在文件行中有第5列的行。在本例中,我的输出应该是第3行和第4行(其中1和3作为第5列)
做这件事最好的方法是什么?
假设我有一个文件A包含需要删除的列号(我的输入文件fileB中确实有500多个列),
fileA:
2
5
我想从fileB中删除这些列(2和5):
a b c d e f
g h i j k l
在Linux中获得:
a c d f
g i j l
我该怎么办?我发现我可以避免用代码打印那些列:
awk '{$2=$5="";print $0}' fileB
但是,这样做有两个问题,第一,它没有真正删除那些列,它只是使用空字符串来替换它们;其次,不是手动输入这些列号,而是如何通过从另一个文件中读取这些列号来获得这些列号。
原始问题:假设我有一个文件A包含需要
在linux中,我尝试根据第1和第2列对数据进行排序,只打印第3列中值最高的行。我的数据看起来
A 1 75.0
A 1 99.0
A 2 68.0
B 1 66.0
B 1 50.0
B 2 75.0
B 2 80.0
“键”位于第1和第2列,当第1和第2列的数据相等时,我只想打印第3列中值最高的行,如下所示
A 1 99.0
A 2 68.0
B 1 66.0
B 2 80.0
我试着用sort -k1,1 -k2,2进行排序,但是如何更改命令,即它只打印第3列中值最高的行?
我试着用awk分割列来打印一个句子,但是第一个列有空格。
我的初学者代码示例:
$ awk '/Linux/ { print "The filename","\""$1"\"","is located in",$2 }' test.txt
The filename "The" is located in test
The filename "Some" is located in file
The filename "File" is located
当我运行下面的命令时,它输出一个列列表如下:
# rancher clusters
CURRENT ID STATE NAME PROVIDER
* abcd active test-cluster Imported
efgh active prod-cluster Imported
xyzd active dev-cluster
我在Linux机器上有两个CSV文件,其中包含的数据如下:
文件A
Sunil,21,write a line,2312,12-03-2022
Ashok,22,write a para,2312,12-03-2022
Sam,23,create file using,2312,12-03-2022
FileB
21,write a line,Writer
21,write a script,Writer
23,create file using,Coder
25,create class,Coder
22,write a para,Poet
22,write a file,Writer
我有一个文本文件,其行如下(在Linux中):
A B C D
A B C J
E B C P
E F G N
E F G P
A B C Q
H F S L
G Y F Q
H F S L
我需要为前3列找到具有唯一值的行,打印它们的计数,然后为每一行打印汇总的最后一列,因此结果如下:
3 A B C D,J,Q
1 E B C P
2 E F G N,P
1 G Y F Q
2 H F S L
我尝试过的:
cat FILE | sort -k1,3 | uniq -f3 -c | sort -k3,5nr
有什么建议吗?
提前感谢!
我想知道如何使awk从管道输出和文件中获取字符串?
基本上,我已经有了一系列的命令,最终会吐出一个字符串。我想对照csv文件(用逗号分隔的列)检查这个字符串。然后,我希望在文件中找到包含csv文件第7列中的字符串的第一行,并打印出该行第5列的内容。另外,我不太了解linux命令行实用程序/awk,所以可以随意提出完全不同的方法。:)
CSV文件内容如下所示:
col1,col2,col3,col4,col5,etc...
col1,col2,col3,col4,col5,etc...
etc...
我的总体思路是:
(rest of commands that will give a stri