此sed命令在做什么?并有任何在线工具可以对sed进行一些解释,例如regex吗?
sed -i '1s/$/|,a Type,b Type,c Type/;/./!b;1!s/$/|,,,/' textflile.txt
我认为一开始它是在一行的末尾添加csv a类型,b类型,c类型,但是命令的其余部分也是什么
答案 0 :(得分:2)
我不知道任何此类实用程序,但让我使用文本编辑器进行解释:
sed -i '1s/$/|,a Type,b Type,c Type/;/./!b;1!s/$/|,,,/' textflile.txt
^ ^ ^ ^ ^^ ^^ ^
| | | | || || |
modify | End Non-empty || || input
the | of lines || |Negation, file
file | line only || |i.e. lines 2,3,...
in | || |
place | || First
First line Negation, i.e.| line
empty lines only|
Branch to
script end,
i.e. skip the rest
换句话说,它将|,a type, b Type,c Type
添加到第一行,不更改空行,并且将|,,,
添加到所有其余行。
答案 1 :(得分:2)
tree | grep _000
可以写为
grep
因此,您似乎正在向CSV文件添加一些空白字段。
sed -i '1s/$/|,a Type,b Type,c Type/;/./!b;1!s/$/|,,,/' textflile.txt
包含完整的sed手册。
答案 2 :(得分:0)
这不能回答您的问题,但对于人们而言,重要的是要知道并且比注释需要更多的空间和格式,以便:FYI执行sed脚本所做的@choroba says,即
it adds |,a type, b Type,c Type to the first line,
doesn't change empty lines,
and adds |,,, to all the remaining lines.
awk就是这样:
awk '
NR==1 { print $0 "|,a type, b Type,c Type"; next }
!NF { print }
NF { print $0 "|,,," }
'
或者如果您熟悉三元表达式并想删除多余的代码:
awk '{
sfx = "|," (NR==1 ? "a type, b Type,c Type" : ",,")
print $0 (NF ? sfx : "")
}'