不确定如何打开此输入:
A
B
C
apartner
bpartner
cpartner
进入这个输出:
A apartner
B bpartner
c cpartner
我在 80 行文件中有这个模式,需要 40 行。另外,我怎样才能附上每个项目,比如说,<il><b>A</b> <i>apartner</i></il>
?
答案1
使用pr
来自coreutils
:
pr -2 -t -l 40 -s' ' $oldfile > $newfile
使用相同的pr
和添加标签sed
:
pr -2 -t -l 40 -J -S'</b> <i>' $oldfile | sed 's|^|<il><b>|;s|$|</i></il>|' > $newfile
输出:
<il><b>A</b> <i>apartner</i></il>
<il><b>B</b> <i>bpartner</i></il>
<il><b>C</b> <i>cpartner</i></il>
答案2
[GNU]
如果使用并不重要sed
,awk
那么我推荐这是最简单的解决方案:
首先,将文件分成两部分:
head -n 40 file >file1
tail -n 40 file >file2
然后将这些行组合起来:
paste --delimiters=" " file1 file2
当然,您可以使用or来代替head
and :tail
sed
awk
sed -n -e 1,40p combinedfile >file1
sed -n -e 41,80p combinedfile >file2
awk 'NR < 41 {print;}' combinedfile >file1
awk 'NR > 40 {print;}' combinedfile >file2
好吧,我刚刚意识到:纯粹的 awk 解决方案并不像我想象的那么复杂:
awk 'NR < 41 { lines[NR]=$0; next; }; {print lines[NR-40],$0}' combinedfile