使用 sed 或任何其他命令修改 CSV 文件
Modify CSV file using sed or any other command
我正在尝试从 csv 文件中删除 space 和标签。 (在Linux中通过命令行)
sed "s/[[:blank:]]\{1,\}//g" ./TRIM.csv
通过使用上述命令,删除了列的 value/item 之间的 space。
(例如,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~
所有 space已删除 except 'hello world' 之间的 space 这是具有 space.
的列的值
sed -e 's/[ \t]*|[ \t]*/~/g' -e 's/^ *\| *$//g'
# ^ ^
# | |
# Remove whitespace around Replace leading and
# | and replace it with ~ trailing whitespace
sed -r 's/[[:space:]]+\|/~/g;s/~[[:space:]]+/~/g' file
使用-r 或-E 启用正则表达式解释,然后替换一个或多个空格,然后是“|”用“~”。在此之后,将“~”后跟一个或多个空格替换为“~”
根据您展示的示例,请您尝试以下操作。在 GNU awk
中编写和测试应该在任何 awk
.
中工作
awk -F'[[:blank:]]*\|[[:blank:]]*' -v OFS="~" '{sub(/^ +/,"");=}1' Input_file
这可能适合您 (GNU sed):
sed 'y/|/\n/;s/.*/echo "&"|sed '\''s#^\s*\|\s*$##g'\''/e;y/\n/~/' file
将 |
翻译成 \n
。
获取多行结果并从每行的开头和结尾对 trim white space 应用 sed 的第二次调用。
将\n
的结果翻译回~
的
选择:
sed -E 's/^\s*|\s*(\|)\s*|\s*$//g;y/|/~/' file
我正在尝试从 csv 文件中删除 space 和标签。 (在Linux中通过命令行)
sed "s/[[:blank:]]\{1,\}//g" ./TRIM.csv
通过使用上述命令,删除了列的 value/item 之间的 space。
(例如,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~
所有 space已删除 except 'hello world' 之间的 space 这是具有 space.
的列的值sed -e 's/[ \t]*|[ \t]*/~/g' -e 's/^ *\| *$//g'
# ^ ^
# | |
# Remove whitespace around Replace leading and
# | and replace it with ~ trailing whitespace
sed -r 's/[[:space:]]+\|/~/g;s/~[[:space:]]+/~/g' file
使用-r 或-E 启用正则表达式解释,然后替换一个或多个空格,然后是“|”用“~”。在此之后,将“~”后跟一个或多个空格替换为“~”
根据您展示的示例,请您尝试以下操作。在 GNU awk
中编写和测试应该在任何 awk
.
awk -F'[[:blank:]]*\|[[:blank:]]*' -v OFS="~" '{sub(/^ +/,"");=}1' Input_file
这可能适合您 (GNU sed):
sed 'y/|/\n/;s/.*/echo "&"|sed '\''s#^\s*\|\s*$##g'\''/e;y/\n/~/' file
将 |
翻译成 \n
。
获取多行结果并从每行的开头和结尾对 trim white space 应用 sed 的第二次调用。
将\n
的结果翻译回~
的
选择:
sed -E 's/^\s*|\s*(\|)\s*|\s*$//g;y/|/~/' file