私たちはSunOSからLinuxに移行しています。wc -l
コマンドにはいくつかの問題があります。を使用すると、wc -l <file_name>
SunOSは計算の前にスペースを提供しますが、Linuxはそうではありません。これにより、私のタスクの行数検証スクリプトが失敗しました。 Linuxで先行スペースを追加するために、このような関数を作成しました。
wc () { /usr/bin/wc "$@" | sed 's/^/ /'; }
ただし、すべての行数の値に対しては機能しません。私が作業している200以上のスクリプトを変更せずにこの問題を解決する方法。
ベストアンサー1
実際に私が見たLinux(およびOSX)の動作はビットにいくつかの違いがありますが、SunOSとはかなりよく一致します。
HPUX は次の説明に従います。POSIX、先行スペースなしでフォーマットを表示します。
"%d %d %d %s\n", <newlines>, <words>, <bytes>, <file>
awkを使用してSunOS形式をエミュレートできます
#!/bin/sh
wc () {
/usr/bin/wc "$@" | \
awk '{
for (n = 0; n < NF-1; ++n) {
printf("%8d ", $n);
}
printf "%s\n", $NF; }'
}
wc "$@"
POSIXの理論的根拠で述べられている問題を避けるために、意図的に列の間にスペースを残しました。