Bash 使用awk拆分字符串,然后将3-n列拼合在一起

Bash 使用awk拆分字符串,然后将3-n列拼合在一起,bash,awk,split,delimiter,dynamic-columns,Bash,Awk,Split,Delimiter,Dynamic Columns,我不经常写bash脚本,所以请原谅我的无知。我有一个逐行读取的日志文件。根据前4个字符,我操作字符串并重写为一个已清理的文件。在极少数情况下,我不知道会有多少列。最初,在意识到20000+行日志文件中有7列以上的列之前,我使用了以下方法: echo $line | awk '{split($0,a," "); print a[3] " " a[4] " " a[5] " " a[6] " " a[7]}' >> $filename …生成如下输出:你好,世界,我需要休假 我已经到了

我不经常写bash脚本,所以请原谅我的无知。我有一个逐行读取的日志文件。根据前4个字符,我操作字符串并重写为一个已清理的文件。在极少数情况下,我不知道会有多少列。最初,在意识到20000+行日志文件中有7列以上的列之前,我使用了以下方法:

echo $line | awk '{split($0,a," "); print a[3] " " a[4] " " a[5] " " a[6] " " a[7]}' >> $filename
…生成如下输出:
你好,世界,我需要休假

我已经到了可以提取所有所需信息的地步,但它以列表的形式写入:

echo $line | awk '{split($0,a," "); for(i=3;i<=NF;i++) print a[i]}' >> $filename
使用“使用awk打印从第n列到最后一列的所有列”(以及其他内容)这篇文章,我尝试将cat、svn以及其他内容加入到混合中,但语法不正确。我喜欢将上述awk部件替换为:

awk '{out=""; for(i=2;i<=NF;i++){out=$out" "$i}; print $out}'

awk'{out=”“;对于(i=2;i那么
cut
呢:

echo "1 2 3 4 5" | cut -d ' ' -f 3-
输出:

3 4 5

昨天有人发了帖子,但在我回来打勾之前就被删除了(谢谢你,陌生人!)。使用awk,帖子说:

awk'{for(i=3;i
printf(“%s”,out);}
#循环结束。下一行
printf(“\n”)
。祝你好运。
3 4 5