2

パイプ記号で区切られた、ファイル内の前の行に次の行を追加するにはどうすればよいですか?

予想される入力-input.txtの内容

ABC    
BCD    
DEF    
EFG    
FGH    

期待される出力-output.txtの内容

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

3 に答える 3

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'
于 2012-07-27T17:07:35.507 に答える
1

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
于 2012-07-27T17:50:12.307 に答える
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)
于 2012-07-27T17:20:05.900 に答える