tcsh(bashで動作します)で使用しようとしてcolumn -t -s $'\t'
いますが、動作させる方法が見つかりません
echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name
では、tcshで同等のものは何ですか?
tcsh(bashで動作します)で使用しようとしてcolumn -t -s $'\t'
いますが、動作させる方法が見つかりません
echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name
では、tcshで同等のものは何ですか?
tcshには、文字列リテラルに非印刷文字を直接含める以外のメカニズムはありません。
bashでは、これを行うことができます(動作がより一貫しているために変更echo
します):printf
$ printf "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
selected version new version
bbb ccc
$'\t'
tcshでは、を入力して入力したリテラルのタブ文字に置き換えることができCtrl-VTabますが、コードを読み取ると、一連のスペースと区別がつきません。
printf
コマンドを使用\t
してタブ文字に変換する1つの解決策は次のとおりです。
% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s "`printf '\t'`"
selected version new version
bbb ccc
タブ文字を変数に格納することもできます。二重引用符または:t
接尾辞のいずれかを使用して、使用時にリテラル値を保持できます。
% set tab = "`printf '\t'`"
% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s "$tab"
selected version new version
bbb ccc
% printf "selected version\tnew version\nbbb\tccc\n" | column -t -s $tab:q
selected version new version
bbb ccc
一般に、タブの場合は「\t」だけです。ただし、列はこれを文字通りバックスラッシュと文字tとして解釈しているようです。これを回避するには、cntl-vを押してからタブ(引用符で囲みます)を押して、タブ文字を明示的に入力します。
ただし、特定の例の場合、列はデフォルトで空白で区切られているため、-s引数はまったく必要ありません。