输入文件,fruits.txt:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
预期的输出文件:
JAN,APPLE
FEB,MANGO
JAN,ORANGE
MAR,APPLE
FEB,APPLE
要获得上述输出,请使用以下代码:
MAR,APPLE
FEB,APPLE
JAN,ORANGE
这适用于输入文件中的少量数据。我有20万个条目,并观察到切割命令非常慢。也试过awk,没有得到更好的结果。我的要求是从row1读取文件,键为column1。我需要为每个密钥更新条目。
答案 0 :(得分:3)
我认为使用Awk
可以非常轻松地完成此操作,只需使用$1
分隔符分隔文件,您就需要在$2
中散列,
的值
awk -v FS=, -v OFS=, '{key[$1]=$2; next}END{for (i in key) print i,key[i]}' file
此外,如果您想在处理一百万行文件时加快速度,可以在解析时更改本地化设置以加快执行速度,您可以在本地将LC_ALL=C
传递给命令。见Stéphane Chazelas's answer on what "LC_ALL=C" does?
答案 1 :(得分:3)
在bash版本4中,您可以声明一个关联数组,并使用::testing site with flash
call winhttpjs.bat http://flash.org/video.php -saveto res.html
find /i "http://www.adobe.com/go/getflashplayer" "res.html" >nul 2>nul && (
echo site has flash
)||(
echo site has NO flash
)
::testing site WITHOUT flash
call winhttpjs.bat https://www.google.bg -saveto res.html
find /i "http://www.adobe.com/go/getflashplayer" "res.html" >nul 2>nul && (
echo site has flash
)||(
echo site has NO flash
)
的结果填充它,并使用自定义read
分割您的行:
IFS
如果要从数组生成特定输出,还需要循环:
$ declare -A a
$ while IFS=, read key value; do a["$key"]="$value"; done < fruits.txt
$ declare -p a
declare -A a=([MAR]="APPLE" [FEB]="APPLE" [JAN]="ORANGE" )
答案 2 :(得分:3)
最短的使用GNU datamash
:
datamash -st, -g1 last 2 <file
g1
- 第1栏分组last 2
- 保留组的最后一个值输出:
FEB,APPLE
JAN,ORANGE
MAR,APPLE