我有一个包含列表的文件
id1 str1 str2 .. strn
id2 str1 str2 .. strm
Run Code Online (Sandbox Code Playgroud)
(str的数量可以变化)并且我想要一个将其转换为的oneliner
str1 str2 .. strn [id]
str1 str2 .. strm [id]
Run Code Online (Sandbox Code Playgroud)
awk 应该有一种方法可以做到这一点,但我不知道当它们的长度可变时如何获取 $1 之后的“所有字段”。
我的想法是这样的
cat file | awk '{ print $2 and the rest " [" $1 "]" }'
Run Code Online (Sandbox Code Playgroud)
但只是缺少“2 美元和其余的”......
$ awk '{for(i=2;i<=NF;i++)printf "%s%s",$i,OFS (i==NF?"[" $1 "]" ORS:"")}' file
Run Code Online (Sandbox Code Playgroud)
输出:
str1 str2 .. strn [id1]
str1 str2 .. strm [id2]
Run Code Online (Sandbox Code Playgroud)