gpt4 book ai didi

linux - 仅当 csv 中的第二个字段为 yes 时,才将 csv 文件中的单词剪切为文本文件

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:52:13 26 4
gpt4 key购买 nike

我有以下 csv 文件,file.csv:

1,yes,yes,customer1
2,no,yes,customer5
3,yes,yes,customer11
4,no,no,customer14
5,yes,no,customer15
6,yes,yes,customer21
7,no,yes,customer34
8,no,yes,customer89

我想把csv文件转换成下面的格式,new_file.txt

仅当csv中的第二个字段为"is"时,才应从csv行中取出第一个字段和第四个字段

Line Number 1 Customer customer1
Line Number 3 Customer customer11
Line Number 5 Customer customer15
Line Number 6 Customer customer21

请建议如何使用 awk 、 sed 或 perl one liner 等将 csv 转换为 txt (new_file.txt)

最佳答案

这使得它:

$ awk -F, '$2=="yes" {printf "Line number %d customer %s\n", $1, $4}' file
Line number 1 customer customer1
Line number 3 customer customer11
Line number 5 customer customer15
Line number 6 customer customer21

它将逗号设置为字段分隔符并检查第二个字段是否恰好为"is"。在这种情况下,打印所需的输出。

如果您希望此检查不区分大小写,您有两个选择:

使用正则表达式:

awk -F, '$2~/^[yY][eE][sS]$/'

使用忽略大小写:

awk -F, 'BEGIN{IGNORECASE=1} $2=="yes"' a

一起:

awk -F, 'BEGIN{IGNORECASE=1} $2=="yes" {printf "Line number %d customer %s\n", $1, $4}' file

测试

$ cat a
1,yes,yes,customer1
2,no,yes,customer5
3,YES,yes,customer11
4,no,no,customer14
5,yeS,no,customer15
6,yEs,yes,customer21
7,no,yes,customer34
8,no,yes,customer89
$ awk -F, '$2~/^[yY][eE][sS]$/ {print $2}' a
yes
YES
yeS
yEs
$ awk -F, 'BEGIN{IGNORECASE=1} $2=="yes" {print $2}' a
yes
YES
yeS
yEs

参见 Gawk manual --> 3.6 Case Sensitivity in Matching了解更多信息。

关于linux - 仅当 csv 中的第二个字段为 yes 时,才将 csv 文件中的单词剪切为文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25887913/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com