0

私はこのようなリストを持っています:

sharename:shareX
comment:commentX
sharename:shareY
comment:commentY
sharename:shareZ
comment:commentZ

等々...

そして、これは私がリストをどのように見せたいかです:

shareX;commentX
shareY;commentY
shareZ;commentZ

どうすればbashでそれを達成できますか?

4

4 に答える 4

2

ピュアバッシュ:

IFS=':'
while read a b; read c d; do   # read 2 lines
  echo -e "$b:$d"
done < "$infile"
于 2012-04-27T11:32:53.463 に答える
1

一発ギャグ:

odd=0; for i in `cat list | cut -d":" -f2`; do if [ $odd -eq 0 ]; then echo -ne $i; odd=1; else echo $i; odd=0; fi; done

フォーマット:

odd=0; 
for i in `cat list | cut -d":" -f2`; 
do 
    if [ $odd -eq 0 ]; 
    then 
        echo -ne $i";"; 
        odd=1; 
    else 
        echo $i; 
        odd=0; 
    fi; 
done
于 2012-04-27T10:10:40.700 に答える
0

テストされていない、sed部分が間違っている可能性があります

paste -d ';' - - < filename | sed -r 's/(^|;)[^:]:/\1/g'
于 2012-04-27T12:01:58.177 に答える
0

これはあなたのために働くかもしれません:

sed '$!N;s/[^:]*:\([^\n]*\)\n[^:]*:/\1;/' file
shareX;commentX
shareY;commentY
shareZ;commentZ
于 2012-04-27T14:56:56.330 に答える