首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换除第三行以外的所有行的值

替换除第三行以外的所有行的值
EN

Stack Overflow用户
提问于 2022-10-01 15:31:53
回答 2查看 53关注 0票数 0

数据集:

代码语言:javascript
复制
Meredith Norris Thomas;Regular Air;HomeOffice;Office Supplies;Envelopes;Small Box;Park Ridge⢠Embossed Executive Business Envelopes 
Paige Mason;Regular Air;Corporate;Office Supplies;Labels;Small Box;*Staples* Packaging Labels 
Kara Pace;Regular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Small Pack;Fiskars® Softgrip Scissors 
Kristina Collier;Regular Air;Consumer;Office Supplies;Labels;Small Box;Avery 498 
Ryan Foster;Regular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Wrap Bag;Letter Slitter

除了第三行外,我已经尝试在第二栏中替换“常规空气”,但我没有得到预期的产量。

代码语言:javascript
复制
awk 'BEGIN{FS=";";OFS=";"} NR!=3{$2="Irregular Air";print $0}' sales.csv

输出:

代码语言:javascript
复制
Meredith Norris Thomas;Irregular Air;HomeOffice;Office Supplies;Envelopes;Small Box;Park Ridge⢠Embossed Executive Business Envelopes 
Paige Mason;Irregular Air;Corporate;Office Supplies;Labels;Small Box;*Staples* Packaging Labels 
Kristina Collier;Irregular Air;Consumer;Office Supplies;Labels;Small Box;Avery 498 
Ryan Foster;Irregular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Wrap Bag;Letter Slitter

预期:

代码语言:javascript
复制
Meredith Norris Thomas;Irregular Air;HomeOffice;Office Supplies;Envelopes;Small Box;Park Ridge⢠Embossed Executive Business Envelopes 
Paige Mason;Irregular Air;Corporate;Office Supplies;Labels;Small Box;*Staples* Packaging Labels 
Kara Pace;Regular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Small Pack;Fiskars® Softgrip Scissors 
Kristina Collier;Irregular Air;Consumer;Office Supplies;Labels;Small Box;Avery 498 
Ryan Foster;Irregular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Wrap Bag;Letter Slitter
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-01 16:21:43

所有行都是print,但第3行,只需单独执行print操作,就会得到所需的结果,让sales.csv内容成为

代码语言:javascript
复制
Meredith Norris Thomas;Regular Air;HomeOffice;Office Supplies;Envelopes;Small Box;Park Ridge⢠Embossed Executive Business Envelopes 
Paige Mason;Regular Air;Corporate;Office Supplies;Labels;Small Box;*Staples* Packaging Labels 
Kara Pace;Regular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Small Pack;Fiskars® Softgrip Scissors 
Kristina Collier;Regular Air;Consumer;Office Supplies;Labels;Small Box;Avery 498 
Ryan Foster;Regular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Wrap Bag;Letter Slitter

然后

代码语言:javascript
复制
awk 'BEGIN{FS=";";OFS=";"} NR!=3{$2="Irregular Air"}{print $0}' sales.csv

给予输出

代码语言:javascript
复制
Meredith Norris Thomas;Irregular Air;HomeOffice;Office Supplies;Envelopes;Small Box;Park Ridge⢠Embossed Executive Business Envelopes 
Paige Mason;Irregular Air;Corporate;Office Supplies;Labels;Small Box;*Staples* Packaging Labels 
Kara Pace;Regular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Small Pack;Fiskars® Softgrip Scissors 
Kristina Collier;Irregular Air;Consumer;Office Supplies;Labels;Small Box;Avery 498 
Ryan Foster;Irregular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Wrap Bag;Letter Slitter

说明:价值改变动作$2="Irregular Air"有条件,所以它适用于除第三行以外的所有,打印作用没有条件,所以它被不加区别地应用。

(用GNU Awk 5.0.1测试)

票数 1
EN

Stack Overflow用户

发布于 2022-10-01 16:00:31

NR!=3在大括号前面时,它充当行过滤器:只有打印NR!=3的行。

若要打印所有行,但只需有条件地更改$2,请将其移动到大括号块内的if语句。

代码语言:javascript
复制
awk 'BEGIN{FS=";";OFS=";"} {if(NR!=3){$2="Irregular Air";} print $0}' sales.csv

输出:

代码语言:javascript
复制
Meredith Norris Thomas;Irregular Air;HomeOffice;Office Supplies;Envelopes;Small Box;Park Ridge⢠Embossed Executive Business Envelopes
Paige Mason;Irregular Air;Corporate;Office Supplies;Labels;Small Box;*Staples* Packaging Labels
Kara Pace;Regular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Small Pack;Fiskars® Softgrip Scissors
Kristina Collier;Irregular Air;Consumer;Office Supplies;Labels;Small Box;Avery 498
Ryan Foster;Irregular Air;HomeOffice;Office Supplies;Scissors, Rulers and Trimmers;Wrap Bag;Letter Slitter
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73919598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档