如果bash中不存在,则为每行的每个单词添加前缀

时间:2021-05-25 19:28:32

标签: bash

我有一个如下所示的输出 CSV 文件,如果 CSV 文件中不存在 mrt WORD,则需要添加前缀。

mrt/abc .1, mrt/def .3, mrt/mlz .4, mrt/gyt .5, abc-d .6, lbr-e .7,

请指教。

1 个答案:

答案 0 :(得分:0)

假设:您想将“mrt/”添加到缺少该前缀的任何字段

使用 perl 单行:

perl -pe 's{, (?!mrt/)}{, mrt/}g' file.csv

使用 bash:

IFS=","
while read -ra fields; do
    fields=("${fields[@]/# /}")
    for ((i=0; i<${#fields[@]}; i++)); do
        [[ ${fields[i]} == mrt/* ]] || fields[i]="mrt/${fields[i]}"
    done
    echo "${fields[*]}"
done < file.csv

输出

mrt/abc .1,mrt/def .3,mrt/mlz .4,mrt/gyt .5,mrt/abc-d .6,mrt/lbr-e .7