一尘不染

sed将线连接在一起

linux

sed(或其他工具)命令将不带字符“ 0”结尾的文件中的行连接在一起的方式是什么?

我将有这样的行

412|n|Leader Building Material||||||||||d|d|20||0

需要单独放置,然后我会有这样的行(例如,这是3行,但只有一端为0)

107|n|Knot Tying Tools|||||Knot Tying Tools

|||||d|d|0||0

需要合并/合并为一行

107|n|Knot Tying Tools|||||Knot Tying Tools|||||d|d|0||0


阅读 318

收藏
2020-06-02

共1个答案

一尘不染

sed ‘:a;/0$/{N;s/\n//;ba}’

在循环中(分支ba到label :a),如果当前行以0(/0$/)结尾,则追加下一行(N)并删除内部换行符(s/\n//)。

awk:

awk '{while(/0$/) { getline a; $0=$0 a; sub(/\n/,_) }; print}'

Perl:

perl -pe '$_.=<>,s/\n// while /0$/'

bash:

while read line; do 
    if [ ${line: -1:1} != "0" ] ; then 
        echo $line
    else echo -n $line
fi
done
2020-06-02