1

tcsh(bashで動作します)で使用しようとしてcolumn -t -s $'\t'いますが、動作させる方法が見つかりません

echo "selected version\tnew version\nbbb\tccc\n" | column -t -s $'\t'
Illegal variable name

では、tcshで同等のものは何ですか?

4

2 に答える 2

1

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
于 2013-03-05T19:42:55.787 に答える
0

一般に、タブの場合は「\t」だけです。ただし、列はこれを文字通りバックスラッシュと文字tとして解釈しているようです。これを回避するには、cntl-vを押してからタブ(引用符で囲みます)を押して、タブ文字を明示的に入力します。

ただし、特定の例の場合、列はデフォルトで空白で区切られているため、-s引数はまったく必要ありません。

于 2013-03-05T16:51:20.427 に答える