一、需求:
把这些数据库文件转换成一行,然后用scp -r 一次性作拷贝。
二、实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<code>[root@mysql5 ~]</code><code># cat /tmp/1</code>
<code>ga_10122</code>
<code>ga_10589</code>
<code>ga_11053</code>
<code>ga_11238</code>
<code>ga_11559</code>
<code>ga_11944</code>
<code>ga_12193</code>
<code>ga_13542</code>
<code>ga_35179</code>
<code>ga_36013</code>
<code>ga_36063</code>
<code>ga_36575</code>
<code>ga_36737</code>
<code>ga_36926</code>
<code>ga_37962</code>
<code>ga_39596</code>
<code>ga_39599</code>
<code>ga_39603</code>
<code>ga_39604</code>
<code>ga_39605</code>
<code>ga_39608</code>
<code>ga_39609</code>
<code>ga_39610</code>
<code>ga_39614</code>
<code>ga_39618</code>
<code>ga_39619</code>
<code>ga_39622</code>
<code>ga_39625</code>
<code>ga_39626</code>
<code>ga_39630</code>
<code>ga_39633</code>
<code>ga_39636</code>
<code>ga_39639</code>
<code>ga_39640</code>
<code>ga_39642</code>
<code>ga_39645</code>
<code>ga_39648</code>
<code>ga_39652</code>
<code>ga_39654</code>
<code>ga_39657</code>
<code>ga_39668</code>
<code>ga_39675</code>
<code>ga_39687</code>
<code>ga_39690</code>
<code>ga_39691</code>
<code>ga_39693</code>
<code>ga_39695</code>
<code>ga_39697</code>
<code>ga_39702</code>
<code>ga_39703</code>
<code>ga_39704</code>
<code>ga_39708</code>
<code>ga_39715</code>
<code>ga_39717</code>
<code>ga_39724</code>
<code>ga_39725</code>
<code>ga_39727</code>
<code>ga_39728</code>
<code>ga_39730</code>
<code>ga_39732</code>
<code>ga_39738</code>
<code>ga_39741</code>
<code>ga_39743</code>
<code>ga_39753</code>
<code>ga_39757</code>
<code>ga_39761</code>
<code>ga_39765</code>
三、解决有三种
1、采用awk
<code>[root@mysql5 ~]</code><code># awk BEGIN{RS=EOF}'{gsub(/\n/," ");print}' /tmp/1</code>
<code>ga_10122 ga_10589 ga_11053 ga_11238 ga_11559 ga_11944 ga_12193 ga_13542 ga_35179 ga_36013 ga_36063 ga_36575 ga_36737 ga_36926 ga_37962 ga_39596 ga_39599 ga_39603 ga_39604 ga_39605 ga_39608 ga_39609 ga_39610 ga_39614 ga_39618 ga_39619 ga_39622 ga_39625 ga_39626 ga_39630 ga_39633 ga_39636 ga_39639 ga_39640 ga_39642 ga_39645 ga_39648 ga_39652 ga_39654 ga_39657 ga_39668 ga_39675 ga_39687 ga_39690 ga_39691 ga_39693 ga_39695 ga_39697 ga_39702 ga_39703 ga_39704 ga_39708 ga_39715 ga_39717 ga_39724 ga_39725 ga_39727 ga_39728 ga_39730 ga_39732 ga_39738 ga_39741 ga_39743 ga_39753 ga_39757 ga_39761 ga_39765</code>
awk默认将记录分隔符(record separator即RS)设置为\n,此行代码将RS设置为EOF(文件结束),也就是把文件视为一个记录,然后通过gsub函数将\n替换成空格,最后输出。
2、采用sed
<code>[root@mysql5 ~]</code><code># sed ':a ; N;s/\n/ / ; t a ; ' /tmp/1</code>
说明:sed默认只按行处理,N可以让其读入下一行,再对\n进行替换,这样就可以将两行并做一行。但是怎么将所有行并作一行呢?可以采用sed的跳转功能。:a 在代码开始处设置一个标记a,在代码执行到结尾处时利用跳转命令t a重新跳转到标号a处,重新执行代码,这样就可以递归的将所有行合并成一行。
3、cat file | xargs
<code>[root@mysql5 ~]</code><code># cat /tmp/1 | xargs</code>
本文转自 zouqingyun 51CTO博客,原文链接:http://blog.51cto.com/zouqingyun/1877308,如需转载请自行联系原作者