我有两个变量$name
和$birthday
$> echo "$name"
Mack
Lee
$> echo "$birthday"
3rd
May
我想得到这样的输出:
Mack 1 1
Lee 2 2
3rd 3 1
May 4 2
但是,我输入命令:
$> echo -e "$name" "\n" "$birthday"|awk '{print $0,NR,FNR}'
得到这个:
Mack 1 1
Lee 2 2
3rd 3 3 ###here a space in the first
May 4 4
如何删除前导空格并获得FNR值?
答案 0 :(得分:2)
只需使用流程替换:
$ awk '{print $0,NR,FNR}' <(echo -e "$name") <(echo -e "$birthday")
这应解决两个问题,空格和FNR
值。
这基本上将两个输入传递到awk
,就像传递两个输入文件一样。
答案 1 :(得分:2)
从技术上讲,您可以使用Bash流程替换。 <(cmd)
中的每个命令都作为类似文件句柄的对象公开给Awk和其他进程。
awk '{print $0,NR,FNR}' <(echo "$name") <(echo "$birthday")
但这确实引出了一个问题,即实际希望实现的目标。在shell变量中包含大量数据通常是更基本的设计问题的症状。