awk 与 sed 合并行并从行中删除特定的奇怪模式

awk 与 sed 合并行并从行中删除特定的奇怪模式

在下面的awk管道中sed,我尝试通过删除奇数xxxx_digits和后面的空格来格式化文件,然后将偶数移动xxxx_digit到其上方的行并在它们之间添加一个空格。可能有多行,file但它们的格式相同。该Filename_ID行是块中的最后一行,并且每个行都是唯一的。总是会有一个换行符将块分隔开,并且该行FileName_ID不会被处理,只会被打印。可能上面没有注释,FileName_ID如果发生这种情况,那么它也会按原样打印。

文件

00-0000-Lname-Fname-REPEAT
xxxx_0001 xxxx_0002
111111-yyyy
xxxx_0003 xxxx_0008
111111-yyyy-0
xxxx_0009 xxxx_0006
FileName_ID

FileName_ID

期望

xxxx_0002 00-0000-Lname-Fname-REPEAT
xxxx_0008 111111-yyyy
xxxx_0006 111111-yyyy-0
FileName_ID

FileName_ID

awk

awk 'NR%2{printf "%s ",$0;next;}1' file | sed 's/xxxx_[0-9][0-9][0-9][13579]//g'

答案1

Perl:

perl -lane 'if ($.%2) {$a=$_; next} if ($F[1]) {print "$F[1] $a"} else {print $a; print} END {print $a if $.%2}' file

AWK:

awk 'NR%2 {a=$0; next} $2 {print $2" "a} !$2 {print a; print} END {if (NR%2) print a}' file

相关内容