我真的很好奇:是否有任何工具可以帮助shell文本处理程序->将一列剪掉,提供给文本处理程序,然后粘贴回去。
例如,我有一个文件:
3f27,tom,17
6d44,jack,19
139a,jerry,7我想改变字段2,删除所有的爱雨。
我知道有很多方法可以解决这个问题。但为什么我们不面对它呢?
我想要一个工具,比如:
deal-only -d"," -f2 sed 's/[aeiou]//g'这更干净更强大。
那么,是否有人知道这样的工具,或类似的解决方案?如果不是,我想创造一个。
正如我前面所说的,我知道sed,或者awk可以很好地处理上面的问题。但是当您遇到一个复杂的问题时,sed或awk无法拯救您。
deal-only -d"," -f2 ./ip2country.rb在这里,我想修改第2列从ip到国家。
发布于 2016-05-26 21:04:59
您可以使用bash的协同处理特性(参见这里):
#!/bin/bash
coproc stdbuf -oL sed 's/[aeiou]//g'
while IFS="," read a b c ; do
echo "${b}" >&${COPROC[1]}
read -u ${COPROC[0]} b2
echo "${a},${b2},${c}"
done一些随机的注释:
stdbuf -oL部分--参见上述文档中的“缓冲”部分)。祝好运!
发布于 2016-05-26 19:06:57
使用awk
# script.awk
BEGIN { FS="," }
{print $1 "," gensub("[aeiou]+", "", "g", $2) "," $3}然后:
awk -f script.awk < data.txthttps://stackoverflow.com/questions/37469033
复制相似问题