Unix如果较短则连接两行

nzkunb0c  于 2023-01-08  发布在  Unix
关注(0)|答案(3)|浏览(151)

我有500k行固定长度的数据,但在某些行有输入字符之间的数据。
每行长度为26个字符。

ABCDEFGHIJKLMNOUPQRSTUVWXTZ
ABCDEFGHIJKLM<BR>
NOUPQRSTUVWXYZ
ABCDEFGHIJKLMNOUPQRSTUVWXTZ

第2行有输入字符。我想从第2行删除输入字符,并将其与其下一行合并。例如:

ABCDEFGHIJKLMNOUPQRSTUVWXTZ
ABCDEFGHIJKLMNOUPQRSTUVWXYZ
ABCDEFGHIJKLMNOUPQRSTUVWXTZ

我尝试使用awk和sed,但结果不正确

pcww981p

pcww981p1#

如果您的系统中有Perl,那么您可以简单地做到这一点。

$ perl -pe 's/<BR>\n//' your_file_name

它是一个一行程序,您只需在命令行中运行它。
或者使用awk:

awk '{ORS = sub(/<BR>/,"") ? "" : "\n"; print $0}' your_file_name
yacmzcpb

yacmzcpb2#

这可能对您有用(GNU sed):

sed 'N;s/<BR>\n//;P;D' file

或:

sed -z 's/<BR>\n//g' file
dnph8jn4

dnph8jn43#

一种稍微有点离谱的做法是:

  • 删除所有现有的换行符
  • 每隔27个字符插入新换行符

它看起来像这样:

tr -d '\n' < YOURFILE | fold -w 27   
ABCDEFGHIJKLMNOUPQRSTUVWXTZ
ABCDEFGHIJKLMNOUPQRSTUVWXYZ
ABCDEFGHIJKLMNOUPQRSTUVWXTZ

相关问题