我有一個輸出一些文件路徑的函數,我需要這些路徑由NUL charachter分隔,而不是新行\n
字符。我嘗試下面的代碼:如何在bash中使用AWK添加NUL字符分隔符?
function myfunc
{
declare -a DUPS
# some commands to fill DUPS with appropriate file/folder paths
(for i in "${DUPS[@]}"; do echo "$i"; done)|sort|uniq|awk 'BEGIN{ORS="\x00";} {print substr($0, index($0, $2))}'
}
但是,如果我管其輸出hexdump
或hd
,沒有NUL字符diplayed。看來,NUL字符不包括在awk
輸出:
myfunc | hd
會打印:
00000000 2f 70 61 74 68 2f 6e 75 6d 62 65 72 2f 6f 6e 65 |/path/number/one|
00000010 2f 2f 70 61 74 68 2f 6e 75 6d 62 65 72 2f 74 77 |//path/number/tw|
00000020 6f 2f 2f 70 61 74 68 2f 6e 75 6d 62 65 72 2f 74 |o//path/number/t|
00000030 68 72 65 65 2f |hree/|
00000035
我awk
的版本是:
~$ awk -W version
mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
compiled limits:
max NF 32767
sprintf buffer 2040
也可與其他命令,如任何解決方案sed
對我來說是可以接受的。
注意:我的問題不是enter link description here的重複,因爲它要求解決方案適用於不同的機器與不同的awk
s。但我只需要一個適用於我自己機器的解決方案,因此我可以使用可安裝在Ubuntu 14.04上的任何版本的awk
。
您使用的是什麼版本的awk? – rici
@rici我怎麼能找到我的'awk'版本? –
安裝gawk,'sudo apt-get install gawk'。或者你可以在我的答案中使用'printf'解決方案來讓'mawk'做你想做的事。 – rici