我有一个名为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
如果你想坚持只使用外壳的解决方案:
while read line; do
if [[ "${line}" = *all* ]]; then
echo "${line%,*},one"
echo "${line%,*},two"
else
echo "${line}"
fi
done < foo.input
在sed
:中
sed '/,all$/{ s/,all$/,one/p; s/,one$/,two/; }'
当行末尾与,all
匹配时,首先用one
替换all
并打印;然后用CCD_ 10代替CCD_。