如何从文本文件中生成制表符分隔文件?

时间:2013-09-10 11:13:51

标签: linux text sed tr

我有一个文件,其中奇数行上的数字和偶数行上的文字如下:

123123
string A
456456
string B
789789
string C

我想让它达到这种格式(制表符分隔):

123123    string A
456456    string B
789789    string C

我尝试用

删除所有换行符
tr -s -d " " < myFile

然后使用sed

sed -i 's/[0-9]\s/' myFile

但没有取得很大成功。

你能帮我完成这件事吗?

4 个答案:

答案 0 :(得分:2)

最简单的方法是使用paste,如下所示:

paste - - < myFile

在此命令中,paste从stdin中读取文件,并将每两行(即两个“ - ”所用的行)组合成一个由制表符分隔的单行。

答案 1 :(得分:1)

尝试:

sed '$!N;s/\n/\t/' inputfile

这将连接由 TAB 字符分隔的行。

示例:

$ seq 10 | sed '$!N;s/\n/\t/'
1   2
3   4
5   6
7   8
9   10

答案 2 :(得分:1)

哟可以尝试以下方法:

paste <(grep -E '^[[:digit:]]+' myFile) \
      <(grep -E '^[[:alpha:]]+' myFile) \

答案 3 :(得分:0)

使用

awk 'NR%2{printf "%s\t", $0;next}1' file
123123  string A
456456  string B
789789  string C

使用

perl -pe 'chomp; $_ = ($. % 2) ? sprintf "%s\t", $_ : sprintf "%s\n", $_;' file

使用

c=0
while read a; do
    ((c++))
    if ((c%2)); then
        printf "%s\t" "$a"
    else
        echo "$a"
    fi
done < file