我有这行输出:
M file.txt
进入这个 awk 程序:
awk '{printf("\t%s: %s %s\n", FNR, $1, $2)}'
返回
1: M file.txt
这是有效的,并且是常见的情况。但是,如果文件有空格并且输出行看起来像这样:
M "tmux split-window subcommand.md"
awk 给出了这个:
1: M "tmux
但所需的输出是这样的:
1: M "tmux split-window subcommand.md"
我怎样才能解决这个问题?
使用以下命令将行号添加到当前行
awk
:第零个字段
$0
是完整的行。如果您使用分隔符,它不会将引号之间的空格视为单独的单词。
因此,我们可以使用您认为不会出现在输入字符串中的任何分隔符。
echo 'M "tmux split-window subcommand.md"' | awk -F: '{printf("\t%s: %s %s\n", FNR, $1, $2)}' 1: M "tmux split-window subcommand.md"
尝试这个:
我从 GNU awk 的在线手册中得到它。就这个。 https://www.gnu.org/software/gawk/manual/html_node/Splitting-By-Content.html