在一行内删除大型unix文件中的CRLF

时间:2016-07-28 03:55:30

标签: linux unix newline

数据文件有672列,其中tab作为分隔符,CRLF位于每行的末尾,并且在一行内有效地将一行拆分为多行。

    ***Current***
    row1: col1<\t>col2<\t>col3<\t>col4<\r\n>
    row2: col1<\t>col2<\r\n>
          col3<\r\n>
          col4<\r\n>

    ***Expected***
    row1: col1<\t>col2<\t>col3<\t>col4<\r\n>
    row2: col1<\t>col2<\t>col3<\t>col4<\r\n>

2 个答案:

答案 0 :(得分:0)

这是脚本reorder.sh,执行时会创建输出文件expected.txt

#!/bin/bash

input_file=$1;
j=1
for i in `awk '{for(k=1;k<=NF;++k) print $k}' $input_file`
do
        if [ $(( $j % 4 )) -eq 0 ]; then
                echo $i >> expected.txt
        else
                echo -n $i"     " >> expected.txt
        fi
        ((++j))
done

./reorder.sh current.txt

答案 1 :(得分:0)

以下sed脚本帮助我删除了CRLF字符。

script.sed:join /\$/{N s/\\n// b join }

调用上述脚本的方法

sed  -f  script.sed  chap4  > chap4.new