【发布时间】:2018-02-27 05:01:12
【问题描述】:
我有一个制表符分隔的文件,我需要访问每个制表符。大多数情况下,每个选项卡都会有一个字符串 & ,这对 AWK 来说很容易。但是,有时选项卡会是空的,我不知道如何更改它们。我需要用“x”替换那里的空选项卡。我已经尝试过 sed、awk 甚至是带有 while 循环的计数器。我目前的尝试是使用 if 循环来测试“”。不知道该怎么办.. 谢谢。
middlename=$(cat $1 | awk '{print $3}')
if test $middlename = " "
then
echo "yes"
fi
【问题讨论】:
-
Quibble:
/bin/sh在任何现代系统上都不是 Bourne,它是 POSIX sh。要区分这两者,您可以使用 GNU Autotools 所做的相同技术:检查^是否充当管道字符。在 1970 年代的 Bourne 中,echo hello ^ cat将发出hello,而在 1990 年代的 POSIX sh 及其兼容的衍生物中,它将发出hello ^ cat。 -
无论如何,你需要更多的报价,shellcheck.net 会告诉你而不需要人工参与。例如,
if test "$middlename" = ""会做得很好。 -
不行,文件数据是这样的。
-
tom
"blank" henry dept num 我需要访问那个空白。 -
明白了。实际上,我在当天提出了一个关于这种方式的问题——read in bash on tab-delimited file without empty fields collapsing。 answer by DigitalRoss 建议使用带有非空白分隔符的
tr将在/bin/sh土地上为您工作,只要存在这样的分隔符(在您的数据中找不到)。