$: cat file
a 51661b 99595c 65652d 51515
$: sed -E 's/([a-z] [0-9]+)\n*/\1\n/g' file
a 51661
b 99595
c 65652
d 51515
使用awk非常简单。
$: awk '{ print gensub("([a-z] [0-9]+)\n*", "\\1\n", "g") }' file
a 51661
b 99595
c 65652
d 51515
甚至可以只使用bash内置...但不要...
while read -r line
do while [[ "$line" =~ [a-z]\ [0-9]+ ]]
do printf "%s\n" "$BASH_REMATCH"
line=${line#$BASH_REMATCH}
done
done < file
a 51661
b 99595
c 65652
d 51515
2条答案
按热度按时间50pmv0ei1#
简单的
sed
。使用
awk
非常简单。甚至可以只使用bash内置...但不要...
qv7cva1a2#
Paul已经给出了一个很好的答案,但是对于
sed
,一个更直接的表达式可以说是:使用/输出示例
在您的情况下,这将是: