标签: awk

GREP - 排除带有问号“?”的行条目

我有一个包含超过 800k 条目的大文件(访问日志文件)。我需要输出一个 URL 中仅包含干净 URL(不带参数/“?”)的文件。

输出应该只显示没有“?”的条目 在网址中。

参数网址:

http://www.example.com/sample?parameter=1

awk grep

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

使用 AWK 根据第一列合并唯一行

我正在尝试编写一个 AWK 脚本来汇总大型文本文件中的数据。结果数据的顺序很重要,所以我不能使用排序。

我尝试过 FNR==NR 的不同变体,但没有任何运气

输入文件

Height 3.5
Weight 12.3
Age 23
: 
:
Height 4.5
Weight 15.5
Age 31
:
:
Run Code Online (Sandbox Code Playgroud)

预期输出

Height 3.5 4.5
Weight 12.3 15.5
Age 23 31
Run Code Online (Sandbox Code Playgroud)

unix bash awk text-processing sed

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

Grep 相同的符号

这是我的 df -h 输出

 df -h
Filesystem      Size  Used Avail Use% Mounted on
rootfs           98G   82G   17G  83% /
none             98G   82G   17G  83% /dev
none             98G   82G   17G  83% /run
none             98G   82G   17G  83% /run/lock
none             98G   82G   17G  83% /run/shm
none             98G   82G   17G  83% /run/user
tmpfs            98G   82G   17G  83% /sys/fs/cgroup
C:\              98G   82G   17G  83% /mnt/c
Run Code Online (Sandbox Code Playgroud)

我只想查看

rootfs           98G   82G   17G  83% /
C:\              98G   82G   17G  83% /mnt/c
Run Code Online (Sandbox Code Playgroud)

怎么做?C:\ 可能不同,但 /mnt/c 挂载点保持不变

如何使用 grep …

bash awk grep

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

在 Unix 中转换行中未定义数量的列

我有一个文件,如下所示:

1 genA genB
2 genC genA genS genY
3 genM genC genF
...
Run Code Online (Sandbox Code Playgroud)

我想有以下输出:

1 genA
1 genB
2 genC
2 genA
2 genS
2 genY
3 genM
3 genC
3 genF
...
Run Code Online (Sandbox Code Playgroud)

有没有什么办法可以在 unix 中使用 awk、sed 或类似的方法来完成?

perl awk sed

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

使用 AWK 从字符串中删除起始子字符串 http?

我想知道是否有更好、更干净的方法来仅使用 AWK 删除文件中每行开头和最后的字符串?

这是我到目前为止得到的

cat results.txt | awk '{gsub("https://", "") ;print}' | tr -d ":443"

File: results.txt

https://www.google.com:443
https://www.tiktok.com:443
https://www.instagram.com:443


To get the result

www.google.com
www.tiktok.com
www.instagram.com
Run Code Online (Sandbox Code Playgroud)

bash awk

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

将另一行的前缀添加到每个字符串

我有一个文件:

# Sequence Data: seqnum=1;seqlen=3142;seqhdr="GUT_GENOME148255_1"
>1_59_1276_-
>2_1339_1842_-
>3_1873_2436_-
>4_2470_2928_-
# Sequence Data: seqnum=2;seqlen=3085;seqhdr="GUT_GENOME148255_2"
>1_3_266_-
>2_256_1038_-
# Sequence Data: seqnum=3;seqlen=3050;seqhdr="GUT_GENOME148255_3"
>1_22_1062_-
>2_1072_1746_-
>3_1767_3017_-
# Sequence Data: seqnum=4;seqlen=2934;seqhdr="GUT_GENOME148255_4"
>1_83_436_-
>2_438_1430_-
>3_1432_1872_-
>4_1986_2933_+
Run Code Online (Sandbox Code Playgroud)

我想添加与seqnum以 开头的每一行对应的数字>,这样它看起来像这样:

# Sequence Data: seqnum=1;seqlen=3142;seqhdr="GUT_GENOME148255_1"
>1-1_59_1276_-
>1-2_1339_1842_-
>1-3_1873_2436_-
>1-4_2470_2928_-
# Sequence Data: seqnum=2;seqlen=3085;seqhdr="GUT_GENOME148255_2"
>2-1_3_266_-
>2-2_256_1038_-
# Sequence Data: seqnum=3;seqlen=3050;seqhdr="GUT_GENOME148255_3"
>3-1_22_1062_-
>3-2_1072_1746_-
>3-3_1767_3017_-
# Sequence Data: seqnum=4;seqlen=2934;seqhdr="GUT_GENOME148255_4"
>4-1_83_436_-
>4-2_438_1430_-
>4-3_1432_1872_-
>4-4_1986_2933_+
Run Code Online (Sandbox Code Playgroud)

该过程应该遍历整个文件。我怀疑这是可以做到的,awk但我的努力是没有用的。

bash awk sed

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

如何使用 shell 脚本将值从一个文件映射到另一个文件并将其写入另一个文件

我有 2 个文本文件。

下面的文本文件是projectnameid.txt. 第一列是项目名称。项目 ID 中的第二列

basket-items                      9189
cloudfabric-notifications         10789
cloud-ports                       10965
common                            9081
customer-port-management          8550
deploy-quote                      8348
geographical-location-management  8549
internet-connections              9293
ipaddress                         8536
ip-addresses                      9294
order-notifications               11725
order-status                      8353
port-inventory                    8486
port-locations                    8490
pricing-quotes                    8493
product-availability              8488
product-catalogue                 8489
product-countrylist               8492
stub-service                      8510
customer-port-management-sf       10488
internet-connections-order-sf     11166
ip-addresses-order-sf             11165
Run Code Online (Sandbox Code Playgroud)

下面的文本文件是endfilter3-all-b.txt

337718  10965  "refs/merge-requests/13/head"  "2023-07-19T11:39:41.739Z"
318933  8536   "develop"                      "2023-07-05T11:41:28.482Z"
366210  8549   "develop"                      "2023-08-11T13:49:18.905Z"
338835  8510   "main"                         "2023-07-20T06:45:59.823Z"
135208  8348   "main"                         "2023-02-17T11:25:07.723Z"
115402  8493   "main"                         "2023-02-07T06:52:05.486Z"
361979 …
Run Code Online (Sandbox Code Playgroud)

linux shell awk grep sed

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

使用命令行工具根据唯一 ID 聚合 CSV 数据

我想集合数据从一个CSV文件到另一个,使用命令行工具,如bashsedawk等等中的每个文件中的每一行与一个唯一的ID开始在第1列,并且如果在所述目的地的行该ID相匹配,则行应该被替换,否则应该附加。输入数据未排序,但结果的排序顺序无关紧要,因此如果有帮助,文件可以作为脚本的一部分进行排序。

例如,给定当前状态aggregate.csv

1,olddata
3,olddata
2,olddata
Run Code Online (Sandbox Code Playgroud)

和文件new.csv

4,newdata
2,changeddata
3,changeddata
Run Code Online (Sandbox Code Playgroud)

我想aggregate.csv出来如下(以任何排序顺序):

1,olddata
2,changeddata
3,changeddata
4,newdata
Run Code Online (Sandbox Code Playgroud)

这些行可能包含大量列,因此一次替换一个单元格并不理想。CSV 保证不包含引用的换行符,因此逐行搜索并一次替换整行是一种有效的方法。

抱歉,如果这是重复的,但我找不到另一个完全使用这种 CSV 合并方法的问题。

我已经尝试调整这个问题的答案,但它首先需要通过逐行解析两个文件、排序、删除重复项和保存来生成所有 ID 的“模板文件”——我希望有一种更简单的方法是可能的。

这个问题在 sed 和 awk 中有答案,我也复制了这些答案,并管理了正则表达式替换部分,但不是在不存在匹配的情况下向文件追加新行的方法。

谢谢!

bash awk command-line join sed

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

有人可以向我解释这个 awk 脚本吗?

我在 linux 上做了一些研究,我遇到了这个 awk 脚本:

$ awk -F: '$3 >= 1000 && !($1 == "nobody" && $3 == 65534) { SUM+=1 } END { print SUM }' /etc/passwd
Run Code Online (Sandbox Code Playgroud)

它会通过统计 UID 大于或等于 1000 的用户并忽略特殊的 nobody 帐户来获取本地用户帐户的数量。

但是,我不明白代码。有人可以向我解释一下吗?

awk

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

如何获取文件中排序值的中位数?

假设我的文件对数字进行了排序,如下所示:

1
22
36
45
53
Run Code Online (Sandbox Code Playgroud)

我希望能够获得 36。另一方面,如果文件的行数为偶数,例如:

1
22
36
45
53
67
Run Code Online (Sandbox Code Playgroud)

我想要平均值 (36+45)/2。

我想我当然可以使用 wc 来获取行数并处理中间的行。但是有没有更优雅的方法来获得中位数?

bash awk

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

标签 统计

awk ×10

bash ×6

sed ×5

grep ×3

command-line ×1

join ×1

linux ×1

perl ×1

shell ×1

text-processing ×1

unix ×1