sed
長い間使ってきましたが、解決できない不思議な点に出会いました。
実際のケースで私の問題を説明しましょう。
シーン1
printf "ls" | xclip -selection clipboard
echo "ls" | xclip -selection clipboard
最初のコマンドは、printf
出力をパイプしてxclip
クリップボードにコピーします。デフォルトでは、新しいprintf
行echo
は最後に挿入されません。したがって、これを端末に貼り付けると、コピーされたls
コマンドは自動的には実行されません。
2番目の例では、最後に新しい行があるため、クリップボードの内容を貼り付けると、クリップボードのコマンドも実行されます。
これは私にとっては望ましくありません。だから私は改行文字を削除したかったのですが、sed
以下のシナリオで説明されているように失敗しました。
シナリオ #2
echo "ls" | sed -r 's/\n//g' | xclip -selection clipboard
クリップボードの内容にはまだ改行文字が含まれています。これを端末に貼り付けると、コマンドは自動的に実行されます。
私もキャリッジリターンを削除してみました\r
。しかし、何もありません。ここで非常に重要で基本的なものが欠けているようです。
ベストアンサー1
sed
改行区切り記号\n
- 常に入力時に削除され、出力時に再挿入されます。持ついいえ\n
sed
編集結果として表示されないパターンスペースの新しい行文字。sed
注:GNUモードは除外-z
...
ただ使用してくださいtr
:
echo ls | tr -d \\n | xclip -selection clipboard
それともsed
完全に忘れてしまう方が良いです。
printf ls | xclip -selection clipboard