替换 PIPE 字符集

替换 PIPE 字符集

我有一个用 3 个管道 (|||) 分隔的文件。例如名称|||网址|||日期|||金额|||

我正在尝试做两件事

  1. 提取另一个文件中的特定列,例如 - 新文件中要分隔的数量(它是文件中的第四列)

  2. 将所有 3 个管道替换为逗号,因此新文件看起来像 - name,url,date,amount,

我想用 3 个管道替换逗号,因为我的数据之间也有单个管道字符。

我已经尝试过 - awk -F '[\|]'+ '{print $4}' temp.csv > temp1.csv。但这会提取数据中是否存在单个管道。

预先感谢拉胡尔

答案1

用作[|]{3}字段分隔符从原始数据中提取特定字段:

$ awk -F '[|]{3}' '{ print $4 }' input.csv

要使用正则表达式作为字段分隔符需要 GNU awk

要将全部替换|||为逗号:

$ sed 's/|||/,/g' input.csv >output.csv

答案2

这应该可以解决提取三重管道分隔数据的第四个字段的问题:

sed 's/|||/,/g' /path/to/input | awk -F, '{print $4}'

相关内容