Unix - 如何将下一行附加到文件中的上一行

时间:2012-07-27 17:03:36

标签: shell

如何将下一行追加到文件中的上一行,并用竖线符号分隔?

期望输入 - input.txt的内容

ABC    
BCD    
DEF    
EFG    
FGH    

期望输出 - output.txt的内容

|ABC|BCD|    
|BCD|DEF|    
|DEF|EFG|    
|EFG|FGH|    
|FGH||

3 个答案:

答案 0 :(得分:2)

paste - - < input-txt

是一个好的开始,但它不会添加您想要的分隔符。为此,请尝试:

 paste - - < input-txt | awk '{$1=$1; print OFS $0 OFS}' OFS=\|

(或在字段之间插入|符号的任何其他方法!此版本在最后一行发出|FGH|而不是|FGH||。)

或者:

 sed 1d input-txt | paste -d \| input - | sed 's/^\|$/|/g'

答案 1 :(得分:0)

在linux上使用bash

 join -o 1.2,2.2,2.3 -t'|' -1 1 -2 1 -a 1 <(awk '{print(NR"|"$0)}' input.txt | sort -k1,1 -t'|' -n) <(awk '{print(NR - 1"|"$0"|")}' input.txt | sort -k1,1 -t'|' -n)

答案 2 :(得分:0)

http://www.gnu.org/software/gawk/manual/html_node/Field-Separators.html

awk -v ORS="|\n" -v OFS="|" 'NR>1{print p, $1} {p=$1} END{print p, ""}' foo.txt

或没有ORS

awk -v OFS="|" 'NR>1{print p, $1, ""} {p=$1} END{print p, "", ""}' foo.txt