我不经常编写 bash 脚本,所以请原谅我的无知。我有一个逐行读取的日志文件。根据前 4 个字符,我操作字符串并重写为清理后的文件。在极少数情况下,我不知道会有多少列。最初,我使用了以下内容,然后才意识到 20,000+ 行日志文件中有超过 7 列:
echo $line | awk '{split($0,a," "); print a[3] " " a[4] " " a[5] " " a[6] " " a[7]}' >> $filename
…产生如下输出: Hello world, I need vacation
我现在可以提取所有需要的信息,但它写成一个列表:
echo $line | awk '{split($0,a," "); for(i=3;i<=NF;i++) print a[i]}' >> $filename
…生产:
Hello
world,
I
need
vacation
使用帖子“使用 awk 打印从第 n 个到最后一个的所有列”(除其他外),我尝试将 cat、svn 以及其他东西混在一起,但语法不正确。我喜欢将上面的 awk 部分替换为:
awk '{out=""; for(i=2;i<=NF;i++){out=$out" "$i}; print $out}'
但我显然不明白规则。
提前感谢您的帮助!