Perl,sed或awk one-liner来改变文件的格式

Alb*_*lby 4 regex unix perl awk sed

我需要有关如何按照文件方式更改文件格式的建议:

A       504688
B       jobnameA
A       504690
B       jobnameB
A       504691
B       jobnameC
...
Run Code Online (Sandbox Code Playgroud)

到file2:

A       B
504688  jobnameA
504690  jobnameB
504691  jobnameC
...
Run Code Online (Sandbox Code Playgroud)

我能想到的一个解决方案是:

cat file1 | perl -0777 -p -e 's/\s+B/\t/' | awk '{print $2"\t"$3}'.
Run Code Online (Sandbox Code Playgroud)

但我想知道是否有更有效的方法或已知的做法来完成这项工作.

Lum*_*umi 7

 perl -nawe 'print "@F[1 .. $#F]", $F[0] eq "A" ? "\t" : "\n"' < /tmp/ab
Run Code Online (Sandbox Code Playgroud)

查找选项perlrun.

另一个有用的添加是-l(追加打印的换行符),但不是在这种情况下.


gle*_*man 5

假设您的输入文件是制表符分隔的:

echo $'A\tB'
cut -f2 filename | paste - -
Run Code Online (Sandbox Code Playgroud)

应该很快,因为这正是剪切粘贴写的事情.