我有以下文件:
test
1
My
2
Hi
3
我需要一种方法来使用cat,grep或awk来提供以下输出:
test1
My2
Hi3
如何在单个命令中实现此目的?
之类的东西cat file.txt | grep ... | awk ...
请注意,它始终是一个字符串,后跟原始文本文件中的数字。
答案 0 :(得分:7)
sed 'N;s/\n//' file.txt
当内容在file.txt
中时,这应该提供所需的输出答案 1 :(得分:3)
paste -d "" - - < filename
这需要连续的行并将它们粘贴在一起,用空字符串分隔。
答案 2 :(得分:2)
awk '{printf("%s", $0);} !(NR%2){printf("\n");}' file.txt
<小时/> 编辑:我刚刚注意到您的问题需要使用
cat
和grep
。这些计划都不是实现既定目标所必需的。如果你有一些理由将它们包括在你没有提到过的内容中,试试我上面写的这行(无用的低效)版本:
cat file.txt | grep '^' | awk '{printf("%s", $0);} !(NR%2){printf("\n");}'
此命令可能使用原始awk
程序中不存在的功能。您可能需要调用新的awk程序nawk
。
答案 3 :(得分:0)
如果你的输入文件总是1个数字,那么1个字符串,你只需要字符串,你所要做的就是每隔一行。
如果你只想要奇数行,你可以awk 'NR % 2' file.txt
如果你想要平均,那就变成了awk 'NR % 2==0' data
答案 4 :(得分:0)
以下是答案:
cat file.txt | awk 'BEGIN { lno = 0 } { val=$0; if (lno % 2 == 1) {printf "%s\n", $0} else {printf "%s", $0}; ++lno}'