【发布时间】:2019-02-14 07:42:16
【问题描述】:
Ubuntu 16.04
重击 4.3.3
如果第 6 列中不存在逗号,我还需要一种在逗号后添加空格的方法。我不得不评论上面的行,因为它在 csv 文件中的所有逗号之后放置了一个空格。
错误: "This is 6th column,Hey guys,Red White & Blue,I know it,Right On"
完美: "This is 6th column, Hey guys, Red White & Blue, I know it, Right On"
我几乎可以看到 awk 打印出第 6 列,然后让 sed 完成剩下的工作:
awk '{ print $6 }' "$feed " | sed -i 's/|/,/g; s/,/, /g; s/,\s\+/, /g'
这是我目前所拥有的:
for feed in *; do
sed -r -i 's/([^,]{0,10})[^,]*/\1/5' "$feed"
sed -i '
s/<b>//g; s/*//g;
s/\([0-9]\)""/\1inch/g;
# s/|/,/g; s/,/, /g; s/,\s\+/, /g;
s/"one","drive"/"onetext","drive"/;
s/"comments"/"description"/;
s/"features"/"optiontext"/;
' "$feed"
done
s/|/,/g; s/,/, /g; s/,\s\+/, /g; 有效,但它是全局的,不在列中。
【问题讨论】:
-
如果逗号不存在,您想在逗号后添加一个空格吗?逗号必须存在才能在其后添加空格。输入文件是什么样子的?它是如何分开的?按空格,那么awk可以解析吗?什么是预期的输出? @edit och 我明白了,您想在逗号后添加一个空格,但该空格不存在,对不起。
-
为什么不
awk '{ print $6 }' "$feed " | sed 's/, */, /g'?|在做什么?还有所有其他的替代品吗?