sed は改行文字を削除できません

sed は改行文字を削除できません

sed長い間使ってきましたが、解決できない不思議な点に出会いました。

実際のケースで私の問題を説明しましょう。


シーン1

printf "ls" | xclip -selection clipboard
echo "ls" | xclip -selection clipboard

最初のコマンドは、printf出力をパイプしてxclipクリップボードにコピーします。デフォルトでは、新しいprintfechoは最後に挿入されません。したがって、これを端末に貼り付けると、コピーされたlsコマンドは自動的には実行されません。

2番目の例では、最後に新しい行があるため、クリップボードの内容を貼り付けると、クリップボードのコマンドも実行されます。

これは私にとっては望ましくありません。だから私は改行文字を削除したかったのですが、sed以下のシナリオで説明されているように失敗しました。

シナリオ #2

echo "ls" | sed -r 's/\n//g' | xclip -selection clipboard

クリップボードの内容にはまだ改行文字が含まれています。これを端末に貼り付けると、コマンドは自動的に実行されます。

私もキャリッジリターンを削除してみました\r。しかし、何もありません。ここで非常に重要で基本的なものが欠けているようです。

ベストアンサー1

sed改行区切り記号\n- 常に入力時に削除され、出力時に再挿入されます。持ついいえ\nsed編集結果として表示されないパターンスペースの新しい行文字。sed注:GNUモードは除外-z...

ただ使用してくださいtr

echo ls | tr -d \\n | xclip -selection clipboard

それともsed完全に忘れてしまう方が良いです。

printf ls | xclip -selection clipboard

おすすめ記事