Bash
如果兩者都包含相同數量的指定字元,則與下一行連接
我需要
concat
包含指定數量的指定字元的行。我不知道,在python
or中很容易ruby
,但我想使用perl
/sed
/awk
/來做到這一點bash
,而不使用任何循環 oruniq -c
。我需要計算多少個plus
字元包含行和concat
下一個如果包含相同數量的字元a+a a+a a+a+a a+a+a a+a+a+a a+a+a+a
輸出應該是:
a+a + a+a a+a+a + a+a+a a+a+a+a + a+a+a+a
awk -F "+" 'NR%2{nf=NF;l=$0;next}{sep=(nf==NF?" + ":RS);printf "%s%s%s\n",l,sep,$0}' file
對於逐行分析,讓我們展開:
awk -F "+" ' NR%2{nf=NF;l=$0;next} { sep=(nf==NF?" + ":RS) printf "%s%s%s\n",l,sep,$0 } ' file
將欄位分隔符設置為
+
.如果行號為奇數 (
NR%2
),則將欄位數放入nf
並將整條記錄放入l
。別的,
- 如果這一行的欄位數等於上一行的欄位數,則設置
sep=" + "
。否則,設置sep=RS
(RS
,記錄分隔符,是換行符)。- 列印
l
,sep
,$0
和換行符。