将输入字段作为数组循环

时间:2011-08-09 14:04:58

标签: bash awk

是否可以做这样的事情:

$ cat foo.txt
1 2 3 4
foo bar baz
hello world
$ awk '{ for(i in $){ print $[i]; } }' foo.txt
1
2
3
4
foo
bar
baz
hello
world

我知道你可以这样做:

$ awk '{ split($0,array," "); for(i in array){ print array[i]; } }' foo.txt
2
3
4
1
bar
baz
foo
world
hello

但结果不合适。

4 个答案:

答案 0 :(得分:55)

发现自己:

$ awk '{ for(i = 1; i <= NF; i++) { print $i; } }' foo.txt

答案 1 :(得分:1)

我使用sed:

sed 's/\ /\n/g' foo.txt

答案 2 :(得分:1)

无需const staleWhileRevalidate = workboxSW.strategies.staleWhileRevalidate({ plugins: [...], }); const cachingStrategy = async (params) => { const response = await staleWhileRevalidate(params); // Do something to response, like get its body, modify it, // and create a new response with the updated body. const modifiedResponse = modify(response); return modifiedResponse; }; workboxSW.router.registerRoute( new RegExp('\/(.*)/suffix/?$'), cachingStrategy ); awksed。您可以直接在shell中轻松完成此操作:

perl

答案 3 :(得分:-1)

如果您打开使用Perl,其中任何一个都可以解决问题:

perl -lane 'print $_ for @F' foo.txt
perl -lane 'print join "\n",@F' foo.txt

使用以下命令行选项:

  • -n循环输入文件的每一行,不自动打印行
  • -l在处理之前删除换行符,然后将其添加回来
  • -a autosplit模式 - 将输入行拆分为@F数组。默认为在空格上拆分。
  • -e执行perl代码