小编pwr*_*ler的帖子

使用输入文件复制文件以读取文件方向

我用来grep搜索 1 TB 的文件。我想要 grep 文件名并将名称放入文本文件中,并且我想要与cpdir 匹配的所有文件/home/user/matches。我想完成这两项任务,而无需使用 grep 两次搜索所有文件。

我的想法是使用 grep 将文件名输出放入文本文件中

grep -ril "xxx" . >> /home/user/matches/output-filename.txt
Run Code Online (Sandbox Code Playgroud)

现在用作output-filename.txtcp 的输入并使 cp 逐行执行。我怎么做?awk?或者你们有其他想法来避免两次搜索所有文件

shell grep pipe find cp

5
推荐指数
2
解决办法
528
查看次数

根据特定列中的值对整个 .csv 进行排序

我有一个csv包含不同收入的文件。我想按收入从高到低对 csv 文件进行排序。我无法找到如何在不使用 python 的情况下在终端中执行此操作。

我不想使用Python。

我想使用简单的东西,比如mlr// 。sedawk

输入:

name,location,capital,profit-lost,revenue,employees,year
company1,location1,35527.19,-33226.25,,0.70,2020
company2,location2,-155921.70,-146.03,,,2020
company3,location3,1873134.74,778424.56,13320152.32,16.90,2020
company4,location4,1050987.60,426317.61,,24.90,2021
company5,location5,368506.18,11997.04,,,2019
company6,location6,7965648.89,369947.14,64413602.44,103.30,2019
company7,location7,1531534.27,125750.94,3054307.36,12.10,2020
company8,location8,6161574.62,906591.96,124804038.64,51.30,2021
Run Code Online (Sandbox Code Playgroud)

输出:

name,location,capital,profit-lost,revenue,employees,year
company8,location8,6161574.62,906591.96,124804038.64,51.30,2021
company6,location6,7965648.89,369947.14,64413602.44,103.30,2019
company3,location3,1873134.74,778424.56,13320152.32,16.90,2020
company7,location7,1531534.27,125750.94,3054307.36,12.10,2020
company1,location1,35527.19,-33226.25,,0.70,2020
company2,location2,-155921.70,-146.03,,,2020
company4,location4,1050987.60,426317.61,,24.90,2021
company5,location5,368506.18,11997.04,,,2019
Run Code Online (Sandbox Code Playgroud)

收入空到几十亿。

希望有人也能帮助我解决这个问题

text-processing sort csv

5
推荐指数
3
解决办法
1867
查看次数

用逗号替换一块空格

我有一个txt格式的文件,我想将其转换为csv. 每个字段之间都有空格块。每个字段之间的空格数量并不相同。

是否有使用 sed 或 awk 的命令将具有 3 个或更多空格的块替换为,. 如果只有 2 个空格,则需要忽略它,以避免数据中的双空格被替换为,

输入:

A_DRIVERLICENSENUMBER_                                                                                                                                                                                                                                           A_PRIORADDRESS2_                                                                                                                                                                                                                                                 A_MONTHLYRENT_           A_EMPLOYEEID_                                                                                                                                                                                                                                                    A_WORKPHONESPECIALINSTR_                                                                                                                                                                                                                                         A_REFDETAIL_                                                                                                                                                                                                                                                     A_VERBALPLEDGE                                                            
input  example,input2 example
Run Code Online (Sandbox Code Playgroud)

输出:

A_DRIVERLICENSENUMBER_,A_PRIORADDRESS2_,A_MONTHLYRENT_,A_EMPLOYEEID,A_WORKPHONESPECIALINSTR_,A_REFDETAIL_,A_VERBALPLEDGE
input  example,input2 example
Run Code Online (Sandbox Code Playgroud)

我在互联网上找不到如何执行此操作。我确信这里有人可以帮助我

sed awk text-processing regular-expression csv

4
推荐指数
1
解决办法
738
查看次数

如何使用 miller 创建新列并向其添加随机标识符

我想在我的csv文件中添加一列,其中包含随机创建的“案例编号”。案例编号的前 2 个字母必须是 AZ 中的任意大写字母。接下来是 5 个随机数。

输入:

COMPANY,NAME,STREET,ZIP,CITY,IBAN
Test Ltd,John,Big Ben 343,4343,London,UK2348020384
Test Ltd,Kate,Big Ben 343,4343,London,UK4389223892
Test Ltd,Jake,Big Ben 343,4343,London,UK3892898999
Run Code Online (Sandbox Code Playgroud)

输出

COMPANY,NAME,STREET,ZIP,CITY,IBAN,CASENUMBER
Test Ltd,John,Big Ben 343,4343,London,UK2348020384,IN84903
Test Ltd,Kate,Big Ben 343,4343,London,UK4389223892,TY93842
Test Ltd,Jake,Big Ben 343,4343,London,UK3892898999,OL34307
Run Code Online (Sandbox Code Playgroud)

如何与米勒一起做到这一点?我准备好了以下命令

mlr -I --csv put '${CASENUMBER}=xxx' then \
    reorder -f COMPANY,NAME,STREET,ZIP,CITY,IBAN,CASENUMBER input/input.csv
Run Code Online (Sandbox Code Playgroud)

到底要在上面的命令中添加什么?

linux shell text-processing csv miller

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

使用 miller 将小写字母转换为大写字母并将输出输出到新列

我想将列复制NAME到列NAME-LOWERCASENAME-LOWERCASE应该只包含小写字母。除此以外,所有列中的大写字母均应保持不变NAME-LOWERCASE

输入

NAME,test
PTC,N
Agri,Y
E-example,N
ForYou,N
Willy Nes,Y
Run Code Online (Sandbox Code Playgroud)

输出

NAME,NAME-LOWERCASE,test
PTC,ptc,N
Agri,agri,Y
E-example,E-example,N
ForYou,foryou,N
Willy Nes,willy nes,Y
Run Code Online (Sandbox Code Playgroud)

我知道如何从另一列创建新列并重新排序

mlr -I --csv \
    put '$FIRSTNAME = sub($FULLNAME," .*","")' then \
    reorder -f FULLNAME,LASTNAME,EMAIL,DOMAIN,COMPANY input.csv
Run Code Online (Sandbox Code Playgroud)

我知道如何将大写转换为小写

mlr --csv -N case -l 
Run Code Online (Sandbox Code Playgroud)

如何组合这两个命令?或者还有另一个米勒命令来实现我的目标?

text-processing csv miller

0
推荐指数
1
解决办法
264
查看次数

标签 统计

csv ×4

text-processing ×4

miller ×2

shell ×2

awk ×1

cp ×1

find ×1

grep ×1

linux ×1

pipe ×1

regular-expression ×1

sed ×1

sort ×1