我有一个名为 abc.csv
的文件,其中包含以下 6 行:
xxx,one
yyy,two
zzz,all
aaa,one
bbb,two
ccc,all
现在,无论何时 all
出现在一行中,该行都应该被 one
和 two
替换,即:
xxx,one
yyy,two
zzz,one
zzz,two
aaa,one
bbb,two
ccc,one
ccc,two
有人可以帮助如何做到这一点吗?
最佳答案
$ awk -F, -v OFS=, '/all/ { print $1, "one"; print $1, "two"; next }1' foo.input
xxx,one
yyy,two
zzz,one
zzz,two
aaa,one
bbb,two
ccc,one
ccc,two
如果你想坚持只使用 shell 的解决方案:
while read line; do
if [[ "${line}" = *all* ]]; then
echo "${line%,*},one"
echo "${line%,*},two"
else
echo "${line}"
fi
done < foo.input
关于linux - 用两条新线替换一条线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18258117/