当
例如,对于以下的
在这种简单的情况下,通过在
awk
使用分隔符将一行分成字段时,它将原始行保留在 $0
变量中。因此,在对单个字段执行操作后,它可以打印原始行(假设没有其他内容修改 $0
)。那么 bash 的 read
是否可以实现类似的功能,既包括单个元素又包括整行?例如,对于以下的
input.txt
:foo,bar
baz,quz
我正在尝试在Bash中模仿的awk
行为是:
awk -F, '($1 == "baz") {print $0}' input.txt
这将打印出baz,quz
,因为$0
是读取的整行,即使该行也被分成了两个字段($1
和$2
)。
Bash:
while IFS=, read -r first second; do
if [[ "$first" == lemur ]]; then
# echo the entire line
fi
done < input.txt
在这种简单的情况下,通过在
$first
和$second
变量之间加上逗号来回显,重新创建原始行不会太困难。但是,在更复杂的场景中,IFS
可能超过一个字符,并且可能有许多字段,除非bash在读取操作期间维护它,否则准确地重新创建原始行将变得更加困难。