跟老男孩学Linux运维-核心系统命令实战-第3章-文件过滤及内容编辑处理命令-paste合并文件
3.10.paste 合并文件(*****)
3.10.1.命令详解
#-d:指定合并的分隔符,默认是 TAB ---常用--- #-s:每个文件占用一行
3.10.2.使用范例
1.基础范例
#3-37:默认合并文件 #查看文件 cat test1 #文件内容如下 1 2 3 4 5 6 #查看文件 cat test2 #文件内容如下 aaaa bbbbbbb ccccccccc eeeeeeeeeee gggggg #2个文件按行进行合并 paste test1 test2 #3-38:通过-d可以指定分隔符 paste -d: test1 test2 #3-39:通过-s合并内容,使其成行 paste test1 #使用-s选项,将1列内容转换成1行 paste -s test1 paste -s test2 #每个文件占用一行 paste -s test1 test2 #3-40:与cat命令合并文本的方式进行对比 #cat 是将2个文件按顺序前后合并 cat test1 test2
2.生产范例
#3-41:假设通过 Shell 脚本生成的账号密码如下所示 #内容如下 stu10309 7f753cc3 stu10312 646e06d stu10315 18273b95 stu10318 d6908f61 stu10321 c441a16e stu10327 11ea966b #要求使用命令将上面的文本转换成下面 SVN 服务配置文件中的账号及密码格式 stu10309=7f753cc3 stu10312=646e06d stu10315=18273b95 stu10318=d6908f61 stu10321=c441a16e stu10327=11ea966b #提示:实现的思路就是将奇数行和偶数行用"="(等号)连接成一行 #方法一:采用 paste 命令加 -s 参数实现 paste -s test.txt #这是 paste 命令的特殊用法,轮流用等号和 \n 做分隔符(\n是换行符,是不可见的,下面的命令结果是为了方便大家理解而加上的) paste -sd '=\n' test.txt #方法二;采用 paste 命令加 -d 参数实现 #这种用法在命令里很少见,功能是不从文本读取输入,而是从标准输入读入。每1个"-"代表读入一行,所以这里有两个 "- -",并用 "=" 进行分隔 paste -d '=' - - < test.txt #方法三:采用 xargs+sed 命令实现 #-n 参数表示多少个字符串为一组 xargs -n 2 <test.txt #将上述结果中的空格替换为=号 xargs -n 2 <text.txt|sed 's# #=#g' #方法四:sed 的特殊应用 sed 'N;s#\n#=#g' test.txt
详细说明
sed 内置命令 N 的作用:不会清空模式空间内容,并且从输入文件中读取下一行数据,追加到模式空间中,两行数据以换行符 \n 连接。
第一行是 "stu10312" 存入模式空间,碰到命令 "N",读取第二行 "636e026d" ,此时模式空间内容为 "stu10312\n636e026d";然后执行 "s#\n#=#g" 将 "\n" 替换为 "=",即为 "stu10312=636e026d",输出到屏幕上,第一个循环结束;后面的循环和前面的思路一样,直到文件结束。
posted on 2020-01-12 20:00 herisson_pan 阅读(12) 评论(0) 收藏 举报
浙公网安备 33010602011771号