我正在尝试从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