在下面的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