2

我有一个文件,其中奇数行有数字,偶数行有文本,如下所示:

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

4 回答 4

3

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

paste - - < myFile

在此命令中,paste从标准输入读取文件并将每两行(这就是两个“-”的用途)组合成由制表符分隔的单行。

于 2013-09-10T11:45:15.200 回答
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
于 2013-09-10T11:22:02.037 回答
1

哟可以尝试以下:

paste <(grep -E '^[[:digit:]]+' myFile) \
      <(grep -E '^[[:alpha:]]+' myFile) \
于 2013-09-10T11:29:34.137 回答
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
于 2013-10-13T16:00:10.583 回答