【发布时间】:2017-11-30 20:31:30
【问题描述】:
假设在执行 bash shell 脚本期间动态生成两个多行文本文件:file1 和 file2
$ echo -e "foo-bar\nbar-baz\nbaz-qux" > file1
$ cat file1
foo-bar
bar-baz
baz-qux
$ echo -e "foo\nbar\nbaz" > file2
$ cat file2
foo
bar
baz
进一步假设我希望使用 awk 涉及对两个文件的文本字符串的操作。例如:
$ awk 'NR==FNR{var1=$1;next} {print $var1"-"$1}' FS='-' file1 FS=' ' file2
有什么方法可以跳过将文本字符串保存为脚本中的文件,而是将文本字符串作为变量(或作为 here-strings 等)传递给 awk?
类似的东西:
$ var1=$(echo -e "foo-bar\nbar-baz\nbaz-qux")
$ var2=$(echo -e "foo\nbar\nbaz")
$ awk 'NR==FNR{var1=$1;next} {print $var1"-"$1}' FS='-' "$var1" FS=' ' "$var2"
# awk: fatal: cannot open file `foo-bar
# bar-baz
# baz-qux' for reading (No such file or directory)
【问题讨论】:
标签: string bash file variables awk