Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.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
Linux 严格使用sed设置输入文本文件的格式_Linux_Sed - Fatal编程技术网

Linux 严格使用sed设置输入文本文件的格式

Linux 严格使用sed设置输入文本文件的格式,linux,sed,Linux,Sed,我有一个名为file.txt的文本文件,内容如下: Name,Height,Width,Area,Colour Rec1,5,10,50,Black Rec2,8,11,88,Red Rec3,9,13,117,Red Rec4,13,16,208,Blue Rec5,15,17,262,Red Rec6,17,19,341,Green Rec7,20,21,430,Black Rec8,22,23,528,Red Rec9,25,25,637,Blue Rec10,27,27,756,Gree

我有一个名为file.txt的文本文件,内容如下:

Name,Height,Width,Area,Colour
Rec1,5,10,50,Black
Rec2,8,11,88,Red
Rec3,9,13,117,Red
Rec4,13,16,208,Blue
Rec5,15,17,262,Red
Rec6,17,19,341,Green
Rec7,20,21,430,Black
Rec8,22,23,528,Red
Rec9,25,25,637,Blue
Rec10,27,27,756,Green
Rec11,30,29,885,Black
Rec12,32,31,1023,Blue
Rec13,35,33,1172,Red
Rec14,37,35,1331,Blue
Rec15,40,37,1500,Black
Rec16,42,39,1678,Green
Rec17,45,41,1867,Red
Rec18,47,43,2066,Blue
Rec19,50,45,2275,Black
Rec20,52,47,2493,Red
我需要使用bash脚本对其进行格式化,以便从所附图片中输出,并且几乎只使用linuxsed命令

到目前为止,我想到的是:

sed -n '/Name/{h}; /Rec/{x; s/,/:/g; s/Height.*$//g; p; x; p}' file.txt
试试这个:

sed 1d file.txt | sed -E 's/([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)/Name: \1\tHeight: \2\tWidth: \3\tArea: \4\tColour: \5\t/'
谢谢, 斯特凡

试试这个:

sed 1d file.txt | sed -E 's/([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)/Name: \1\tHeight: \2\tWidth: \3\tArea: \4\tColour: \5\t/'
谢谢,
斯特凡

sed
在这方面有点过分了。你不能用awk吗?我知道这有点过分了。最后,我们可以使用其他东西,但理想情况是尽可能多地使用sed。因此,最终它必须是一个sed解决方案,但当然,如果需要,可以使用其他一些工具,如awk。如果您已经知道标题,您可以使用捕获组获取所有五列,并在替换部分使用反向引用。。例如:
echo'a,b'| sed-E/([^,]+),([^,]+)/foo:\1\tbaz:\2/”
这就是为什么我要求使用sed:n一些提交给我反馈的草稿,我看到了诸如IFS、for/while/till循环,甚至基于grep和awk的解决方案。所有这些都不是进行作业的正确方式,或者因为作业仅涉及sed而被排除在外。如果这适用于您迄今为止所做的工作,请重新考虑您的方法。
理想情况是尽可能多地使用sed
,但是。。为什么?
sed
在这方面有点过头了。你不能用awk吗?我知道这有点过分了。最后,我们可以使用其他东西,但理想情况是尽可能多地使用sed。因此,最终它必须是一个sed解决方案,但当然,如果需要,可以使用其他一些工具,如awk。如果您已经知道标题,您可以使用捕获组获取所有五列,并在替换部分使用反向引用。。例如:
echo'a,b'| sed-E/([^,]+),([^,]+)/foo:\1\tbaz:\2/”
这就是为什么我要求使用sed:n一些提交给我反馈的草稿,我看到了诸如IFS、for/while/till循环,甚至基于grep和awk的解决方案。所有这些都不是进行作业的正确方式,或者因为作业仅涉及sed而被排除在外。如果这适用于您迄今为止所做的工作,请重新考虑您的方法。
理想情况是尽可能多地使用sed
,但是。。为什么?天哪,你就是那个人。万分感谢!工作起来很有魅力!哦,孩子,你就是那个人。万分感谢!工作起来很有魅力!