使用 awk 或 sed 连接两个连续行

发布于 2024-09-08 15:37:16 字数 194 浏览 5 评论 0原文

如何使用 awk 或 sed 连接两行?

我的数据如下所示:

abcd
joinabcd
efgh
joinefgh
ijkl
joinijkl

我需要如下所示的输出:

joinabcdabcd
joinefghefgh
joinijklijkl

How would I join two lines using awk or sed?

I have data that looks like this:

abcd
joinabcd
efgh
joinefgh
ijkl
joinijkl

I need an output like the one below:

joinabcdabcd
joinefghefgh
joinijklijkl

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(7

面如桃花 2024-09-15 15:37:16
awk '!(NR%2){print$0p}{p=$0}' infile
awk '!(NR%2){print$0p}{p=$0}' infile
何处潇湘 2024-09-15 15:37:16

您可以将 printf 与三元一起使用:

    awk '{printf (NR%2==0) ? $0 "\n" : $0}'

You can use printf with a ternary:

    awk '{printf (NR%2==0) ? $0 "\n" : $0}'
恰似旧人归 2024-09-15 15:37:16
awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j<i) {print line[j+1] line[j]; j+=2}}' yourfile

不需要 sed。

awk 'BEGIN{i=1}{line[i++]=$0}END{j=1; while (j<i) {print line[j+1] line[j]; j+=2}}' yourfile

No need for sed.

欢你一世 2024-09-15 15:37:16

这是 sed 中的:

sed 'h;s/.*//;N;G;s/\n//g' < filename

Here it is in sed:

sed 'h;s/.*//;N;G;s/\n//g' < filename
傲鸠 2024-09-15 15:37:16

他们说模仿是最真诚的奉承形式。
这是受 Dimitre 的 awk 代码启发的 Perl 解决方案:

perl -lne 'print "$_$p" if $. % 2 == 0; $p = $_' infile

$_ 是当前行
$. 是行号

They say imitation is the sincerest form of flattery.
Here's a Perl solution inspired by Dimitre's awk code:

perl -lne 'print "$_$p" if $. % 2 == 0; $p = $_' infile

$_ is the current line
$. is the line number

最终幸福 2024-09-15 15:37:16

对上面的“sed”脚本进行一些改进,需要执行以下操作:
1008
-2734406.132904
2846
-2734414.838455
4636
-2734413.594009
6456
-2734417.316269
8276
-2734414.779617

  and make it :    

1008 -2734406.132904
2846 -2734414.838455
4636 -2734413.594009
6456 -2734417.316269
8276 -2734414.779617

  the "sed" is : "sed 'h;s/.*//;G;N;s/\n/ /g'"

Some improvement to the "sed" script above that will take the following:
1008
-2734406.132904
2846
-2734414.838455
4636
-2734413.594009
6456
-2734417.316269
8276
-2734414.779617

  and make it :    

1008 -2734406.132904
2846 -2734414.838455
4636 -2734413.594009
6456 -2734417.316269
8276 -2734414.779617

  the "sed" is : "sed 'h;s/.*//;G;N;s/\n/ /g'"
三生一梦 2024-09-15 15:37:16

这是命令中“如何使计数和文件出现在同一行”问题的答案:

find . -type f -exec fgrep -ci "MySQL" {} \; -print

Bryon Nicolson 的答案产生了最好的结果。

This is the answer to the question "How to make the count and the file appear on the same line" in the command:

find . -type f -exec fgrep -ci "MySQL" {} \; -print

Bryon Nicolson's answer produced the best result.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文