小编use*_*595的帖子

sed或awk:如何从单独的文件中调用行地址?

我有'file1'和(比方说)100行.我想用sed或awk将第23,71和84行(例如)打印到'file2'.这3行代码位于单独的文件"list"中,每个数字都在一个单独的行中.

当我使用这些命令中的任何一个时,只打印第84行:

for i in $(cat list); do sed -n "${i}p" file1 > file2; done

for i in $(cat list); do awk 'NR==x {print}' x=$i file1 > file2; done
Run Code Online (Sandbox Code Playgroud)

可以通过这种方式使用for循环来为sed或awk提供行地址吗?

awk sed

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

这个AWK命令如何保留数组元素顺序?

这是一个名为'colors.txt'的文件中的RGB值列表

255 222 0  
101 153 255  
255 153 0  
13  112 84  
13  112 84  
255 222 0  
13  112 84  
9   112 84  
Run Code Online (Sandbox Code Playgroud)

我可以使用awk数组从文件中获取5个独特的RGB组合

awk '{arr[($1","$2","$3)]} END {for (i in arr) print i}' colors.txt
Run Code Online (Sandbox Code Playgroud)

这给出了:

9,112,84  
255,222,0  
13,112,84  
255,153,0  
101,153,255  
Run Code Online (Sandbox Code Playgroud)

请注意,这些不是它们在输入文件中的顺序.但是,这个命令

awk 'arr[($1","$2","$3)]++==0 {print ($1","$2","$3)}' colors.txt

255,222,0  
101,153,255  
255,153,0  
13,112,84  
9,112,84  
Run Code Online (Sandbox Code Playgroud)

保留订单.这究竟是如何工作的?我在这里找到了第二个命令版本.

arrays awk

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

标签 统计

awk ×2

arrays ×1

sed ×1