Bashでは、簡単な方法で列を取得し、値に対してbashコマンドを実行してから、結果を新しい列として追加しますか?Bash:コマンドに基づいて列を追加する
単純な(そして工夫された)例として、現在のディレクトリ内のシンボリックリンクのリストと、それらがポイントするターゲットが必要です。 awkの等価は次のようなものかもしれません:
ls | awk '{ "readlink -f "$1 | getline target; print $1, target }'
しかし、それは一口です。私はこの作業のために明示的にツールデザインを好むだろう。 xargs
に似て何か:
ls | add-column readlink -f
、出力は次のようになります。
A.txt /path/to/A.txt
B.txt /path/to/B.txt
、このようなツールが存在しますか?それは改行でファイル名を扱うことができる-print0
を持っているので、
find -mindepth 1 -maxdepth 1 -type l -print0 |
while IFS= read -r -d '' file; do
printf "%s\t%s\n" "$file" "$(readlink -- "$file")"
done | column -t -s $'\t'
注私はfind
代わりのls
を使用しています:シンプルwhile
ループを使用することについてどのように
「ls」でこれを使用することを文字通り*意味しないことを願います。これはいくつかの理由で悪い考えです。 [ParsingLs](http://mywiki.wooledge.org/ParsingLs)を参照してください。 –
私は意図的に '工作物'と言っていることに注意してください。 – Nycto