使用sed或任何其他命令修改CSV文件



我正在尝试从csv文件中删除空格和制表符。(在Linux中通过命令行(

sed "s/[[:blank:]]{1,}//g" ./TRIM.csv

通过使用上面的命令,可以删除列的值/项之间的空格。

(例如,Hello World正在成为HelloWorld(

我还想用"~"替换"|">

示例文件:

0 |         null |               0 |              0 |             0 |             null |  null |
1 |         Hello World |               0 |              0 |             0 |             null |  null |

期望输出:

0~null~0~0~0~null~null~
1~Hello World~0~0~0~null~null~

所有空格都已删除'hello-world'之间的空格除外,该空格是具有空格的列的值。

对于您显示的示例,您可以尝试以下操作吗。在GNUawk中编写和测试应该在任何awk中工作。

awk -F'[[:blank:]]*\|[[:blank:]]*' -v OFS="~" '{sub(/^ +/,"");$1=$1}1' Input_file
sed -r 's/[[:space:]]+|/~/g;s/~[[:space:]]+/~/g' file

用-r或-E启用正则表达式解释,然后替换一个或多个空格|"用"~&";。此后,将"~"后面跟着一个或多个带有"0"的空格~">

sed -e 's/[ t]*|[ t]*/~/g' -e 's/^ *| *$//g'
#               ^                     ^
#               |                     |
#  Remove whitespace around     Replace leading and
#  | and replace it with ~      trailing whitespace

这可能对你有用(GNU sed(:

sed 'y/|/n/;s/.*/echo "&"|sed '''s#^\s*\|\s*$##g'''/e;y/n/~/' file

|的转换为n的。

获取多行结果,并应用sed的第二次调用来修剪每行开始和结束处的空白。

n的结果转换回~

备选方案:

sed -E 's/^s*|s*(|)s*|s*$/1/g;y/|/~/' file

最新更新