我在我的.bashrc這個自定義函數:使用xargs的用戶定義的bash函數
function ord() {
printf '%d' "'$1"
}
我要如何與xargs的使用這個功能:
cat anyFile.txt | awk '{split($0,a,""); for (i=1; i<=100; i++) print a[i]}' | xargs -i ord {}
xargs: ord: No such file or directory
我在我的.bashrc這個自定義函數:使用xargs的用戶定義的bash函數
function ord() {
printf '%d' "'$1"
}
我要如何與xargs的使用這個功能:
cat anyFile.txt | awk '{split($0,a,""); for (i=1; i<=100; i++) print a[i]}' | xargs -i ord {}
xargs: ord: No such file or directory
首先,你的函數只使用1個參數,所以在這裏使用xargs只會取第一個參數。你需要的功能更改爲以下:
ord() {
printf '%d' "[email protected]"
}
要獲得xargs的使用功能,從你的.bashrc,您必須生成一個新的交互的shell。這樣的事情可能工作:
awk '{split($0,a,""); for (i=1; i<=100; i++) print a[i]}' anyFile.txt | xargs bash -i -c 'ord [email protected]' _
既然你已經根據分詞,你可以只商店awk的陣列中的輸出。
arr=(awk '{split($0,a,""); for (i=1; i<=100; i++) print a[i]}' anyFile.txt)
ord "${arr[@]}"
或者,您可以用awk的printf:
awk '{split($0,a,""); for (i=1; i<=100; i++) printf("%d",a[i])}' anyFile.txt
對於所有的awk解決方案,它不能正確轉換。數字被打印爲數字,而字母被轉換爲'0'。我正在尋找將ASCII值轉換爲整數。 – lonestar21
或者您可以導出函數('export -f'),*不*使shell交互。 –
在瑣碎的情況下,你可以使用/usr/bin/printf
:
xargs -I {} /usr/bin/printf '%d' "'{}"
這是爲什麼越來越downvoted? – lonestar21
也許是UUOC?我不是downvoter – jordanm