我有一个 CSV 文件,其记录分隔符为,\n
.其中一列可能包含我希望删除的选项卡和新行。如何使用和/或删除这些字符 ( \t\n\r
) ,直到遇到记录分隔符?sed
awk
答案1
干得好:
cat input_file | tr -d '\r\t' | sed ': loop_start; /,$/b; N; s/\n//; b loop_start'
解释:
tr
用于删除(-d
)所有\r
和\t
字符。- 然后 sed 循环 (
: loop_start; ...; b loop_start
) 和 - 连接所有行 (
N
) 并 - 删除换行符 (
s/\n//
) - 直到找到记录分隔符 (
/,$/
) 并 - 分支到脚本的末尾 (
b
),它将使用下一行输入重新开始脚本。