标签: awk

如何在 unix 中使用 grep、uniq 和 awk 获取集合中重复字符串的数量?

我有一组非常大的字符串,文件的每一行都有一个。许多字符串在文件中的不同位置出现不止一次。

我想要使​​用 awk、grep、uniq 等 unix 命令对字符串进行频率计数。我尝试了几种组合,但没有奏效。

获取频率计数的确切命令是什么?

unix awk grep uniq

-2
推荐指数
1
解决办法
4196
查看次数

删除包含小于/大于用户指定值的数字的行

我需要删除包含大于用户指定数字的值的大文件中的行(见图)。例如,我想删除值大于 5e-48 (x>5e-48) 的行,即 7e-46, 7e-40, 1e-36,.... 的行应该被删除。

sed、grep、awk 或任何其他命令可以做到这一点吗?

谢谢

马库斯

在此处输入图片说明

awk grep sed

-2
推荐指数
1
解决办法
541
查看次数

合并两个文件并排序

我想将两个文件合并为一个文件,并根据第二列的值对它们进行排序。示例如下:

文件 1:

+ 1.01 id 120
- 1.20 id 145
+ 2.15 id 411
(continues)
Run Code Online (Sandbox Code Playgroud)

文件2:

r 0.21 id 4
r 1.78 id 85
r 102 id 850
(continues)
Run Code Online (Sandbox Code Playgroud)

我想将它们合并到一个文件中,但我想根据第 2 列将它们按升序排列,如下所示:

文件 3:

r 0.21 id 4
+ 1.01 id 120
- 1.20 id 145
r 1.78 id 85
+ 2.15 id 411
r 102 id 850
Run Code Online (Sandbox Code Playgroud)

我怎么能这样做?

sorting awk

-2
推荐指数
1
解决办法
42
查看次数

根据另一列值更改列

我有一个包含数百条这样的记录的文件

100,502030,0,444,RSVYU,10
101,501412,1,555,DDGTH,11
102,502269,0,222,DDERF,60
103,508877,2,111,SDEFV,23
Run Code Online (Sandbox Code Playgroud)

如果第 3列的值为0,如何将第 4列的值替换为000

我研究了很多,找不到解决方案。到目前为止我得到了这个

cat testfile.txt | sed -n -r 's/^[0-9]*,[0-9]*,0/000/p'
Run Code Online (Sandbox Code Playgroud)

但它取代了第一部分

bash awk text-processing sed

-2
推荐指数
1
解决办法
1343
查看次数

删除多于x位的行

我想找到一种使用awk或sed删除包含多于4位数字的行的方法:

输入:

test12test1
test154test43test
test12
Run Code Online (Sandbox Code Playgroud)

所需的输出:

test12test1
test12
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?

regex perl awk sed word-list

-2
推荐指数
1
解决办法
77
查看次数

查找并替换特定列

我有这样一个文件:

Name Position Letter String
Bla 123 A ..B.,,,.C..
Bla 123 B ..a.,,,.C..
Bla 123 C ..b.,,,.A..
Run Code Online (Sandbox Code Playgroud)

我想替换.,字母(在第一行中A)

最终产品:

Name Position Letter String
Bla 123 A AABAAAAACAA
Bla 123 B BBaBBBBBCBB
Bla 123 C CCbCCCCCACC
Run Code Online (Sandbox Code Playgroud)

awk思想是用第3列中的"the"字符替换第4列中的字符.我认为awk应该是正确的工具,但我坚持用字符串替换字符.

sed s/\(^.\{4\}\)./\\{3\}/ 没有工作,我认为sed可能是错误的工具.

欢迎awk/sed/python/perl/vi解决方案.

python vi perl awk sed

-3
推荐指数
1
解决办法
654
查看次数

如果一个句子以特定单词开头,如果该单词确实存在,如何更改该单词中的单词?

因此,基本上搜索.txt文件中的行,如果它以"This"这样的单词开头,如果它存在,如何交换该句中的目标单词?用bash,perl或awk打开它.

bash perl awk

-3
推荐指数
1
解决办法
166
查看次数

awk语句的解释

我无法理解这句话:

awk '/^\/\*/ {f=1} {print f?"":$0} /\*\/$/ {f=0}'
Run Code Online (Sandbox Code Playgroud)

unix shell awk ksh

-3
推荐指数
1
解决办法
82
查看次数

匹配两个巨大的csv文件之间的公共ID

我需要比较两个巨大的csv文件和一千个像bellow这样的条目:

id;val

1;a
2;b 
3;c
Run Code Online (Sandbox Code Playgroud)

Ans第二个文件具有以下结构

id1;entry    
1;002
2;x90 
5;d07
Run Code Online (Sandbox Code Playgroud)

期望的结果是匹配并组合具有相同id/id1值的行,并创建第三个csv文件,其中只有匹配的条目显示如下:

idR;valR;entryR
1;a;002
2;b;x90 
Run Code Online (Sandbox Code Playgroud)

为此,我可以在不同的数据库表中加载每个文件,并执行类似这样的选择以检索所有匹配的值:

select tb1.id, tb1.val tb2.entry 
  from tb1, tb2
 where tb1.id = tb2.1   
Run Code Online (Sandbox Code Playgroud)

我可以用这种方法检索所需的所有值.

但是我们假设这些文件可以被排序,并且以这种方式使用它可以使用awk来打印具有相同id和id1值的条目的结果.我能做的最好的事情是为每个值创建两个关联数组,并使用awk和sed/cut执行二进制搜索?

可以加载这两个文件并立即组合它们以生成带有结果的最终csv文件吗?

或者我可以用perl标准的lib来实现这个目的吗?

csv bash awk replace

-3
推荐指数
1
解决办法
686
查看次数

使用bash获取第一行的第二个单词

我正在编写一个简单的脚本,需要使用bash命令来获取第一行的第二个单词.在下面的文件中,我想只打印出"主机",虽然我在这方面遇到了麻烦.

-bash-3.2$ cat filewithstuff
SERVERNAME      host
DOMAIN          all-nfs


-bash-3.2$ cat filewithstuff | awk  '{print $2}'
host
all-nfs
Run Code Online (Sandbox Code Playgroud)

我能够在linux主机上使用以下命令:

cat filewithstuff | sed -n 1p | awk "{print \$1}"
Run Code Online (Sandbox Code Playgroud)

虽然当我从Python脚本运行它时,我得到以下错误:

Executed: /bin/bash -l -c "cat filewithstuff | sed -n 1p | awk \"{print \\$1}\""

Aborting.

Fatal error: One or more hosts failed while executing task 'uninstallApp'

Aborting.
Run Code Online (Sandbox Code Playgroud)

似乎我的Python脚本不喜欢bash命令中的"\",有没有人知道我可以尝试的替代命令?

python linux bash awk sed

-3
推荐指数
2
解决办法
2695
查看次数

标签 统计

awk ×10

sed ×5

bash ×4

perl ×3

grep ×2

python ×2

unix ×2

csv ×1

ksh ×1

linux ×1

regex ×1

replace ×1

shell ×1

sorting ×1

text-processing ×1

uniq ×1

vi ×1

word-list ×1