sed 刪除換行符
sed
':label;N;s/\n/:/;b label'
filename
上面的兩條命令可以實現將文件中的所有換行符替換為指定的字串,如命令中的冒號。命令的解釋:
- :label; 這是一個標簽,用來實現跳轉處理,名字可以隨便取(label),后面的b label就是跳轉指令
- N; N是sed的一個處理命令,追加文本流中的下一行到模式空間進行合並處理,因此是換行符可見
- s/\n/:/; s是sed的替換命令,將換行符替換為冒號
- b label 或者 t label b / t 是sed的跳轉命令,跳轉到指定的標簽處
標簽跳轉和N的追加命令實現了每一行的不間斷放入模式處理空間,從而不會漏掉每一個換行符,而沒有標簽的話跳轉的話,就只能每兩行替換掉一個換行符,對比效果:
echo "a,b,c,d" |sed 's/,/\n/g'|sed ':x;N;s/\n/,/;b x'
echo "a,b,c,d" |sed 's/,/\n/g'|sed 'N;s/\n/,/'
sed -n '/Region/p' source.json | sed 's/^\s*"\w*"://' | sed 's/"},//'|sed 's/"}]//'|sed 's/"//'|sed 'N;s/,\n/\t/'