Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何将awk和sed命令组合在一起_Shell_Awk_Sed - Fatal编程技术网

Shell 如何将awk和sed命令组合在一起

Shell 如何将awk和sed命令组合在一起,shell,awk,sed,Shell,Awk,Sed,我有两个命令 awk 'NR%2{printf $0 " ";next}1' FileName 及 我希望这两个命令作为单个命令一起使用。我尝试使用|格式,但它不起作用 样本IO 输入: header 1 2 3 4 5 输出: 1 2 3 4 5 这个怎么样 awk 'NR != 1 && !(NR % 2) {printf $0 " "; next} 1' FileName | tail +2 在1 sed中也是如此 1d:

我有两个命令

awk 'NR%2{printf $0 "      ";next}1' FileName        

我希望这两个命令作为单个命令一起使用。我尝试使用|格式,但它不起作用

样本IO

输入:

header
1
2
3
4
5
输出:

1   2
3   4
5
这个怎么样

awk 'NR != 1 && !(NR % 2) {printf $0 "      "; next} 1' FileName | tail +2
在1 sed中也是如此

1d:如果行是输入标题的第一行,则删除该行。Sed在d之后循环,因此忽略下一条指令,并在新的运行中处理下一行。 N:在当前缓冲区中加载一个新行so 2行,它们之间有一个\N s\n/:将新行替换为多个空格 打印此循环的结果 重新启动进程,直到文件的下一行结束。
为什么不在一个命令中执行所有操作?这应该可以满足我们对awk的要求


你到底试过什么?怎么搞的?你希望什么?请给出预期输入和输出的适当示例。请阅读我有多个专栏。我必须通过忽略文本文件中的页眉和页脚将它们合并在一起。如果我单独使用这些命令,它就会工作。Bu我需要将此作为一个脚本使用awk时,您永远不需要sed,也不需要printf$0,否则当$0包含格式化字符(例如%s)时,您会感到非常意外。发布一些示例输入和预期输出。我在一个文本文件中有多个用空格分隔的列。我需要第二行应该与第一行连接,同样,第四行与第三行顺序包括您的示例输入文件和预期输出如果我使用此,输出是不同的。。。。。。我的secons列也被删除了。您需要显示示例输入和所需输出。我不应该删除标题。我需要显示标题,AWK操作应该只对body@JimMacaulay:好的,我编辑我的答案是为了按照您在编辑的问题中显示的方式进行工作。重点是从输出中删除标题。您还更改了OPs post,以包含输出中不应包含的标题。。你的命令很好。你能给我解释一下命令吗谢谢你,先生。。。。你能帮我把cose转换成shell脚本吗?我有一个页眉和页脚。它删除标题。不应对标题执行此操作。在POST中添加了IO示例如果我使用此AWK命令,则列未正确对齐。如何安排wtoit@JimMacaulay尝试:awk'NR>2&&ORS=NR%2?\t\t:RS'文件。它将使用tab notspace@JimMacaulay更新了我的帖子以跳过第一行并将其放入正确的列中。您仍然可以将空间更改为选项卡。
awk 'NR != 1 && !(NR % 2) {printf $0 "      "; next} 1' FileName | tail +2
sed '1d;N;s/\n/   /'
awk 'NR>1 && ORS=NR%2==0?"      ":RS' file
1      2
3      4
5