hi
hello
hallo
greetings
salutations
no more hello for you
以下のようなパターンを持っている私は、次のコマンド
sed -e "s_/\n_/\t_g"
を使用して、タブで、すべての改行を交換しようとしていますが、それは働いていません。
誰でもお手伝いできますか?私はsed/awkのソリューションを探しています。
hi
hello
hallo
greetings
salutations
no more hello for you
以下のようなパターンを持っている私は、次のコマンド
sed -e "s_/\n_/\t_g"
を使用して、タブで、すべての改行を交換しようとしていますが、それは働いていません。
誰でもお手伝いできますか?私はsed/awkのソリューションを探しています。
ないあなたはあなたがsed
でラインごとに改行を置き換えることはできません
# awk -vRS="\n" -vORS="\t" '1' file
hi hello hallo greetings salutations no more hello for you
ここtr
が良いですが、私は思う:
tr "\n" "\t" < newlines
Nifleコメントで示唆したように、ここでnewlines
は、元のテキストを保持するファイルの名前です。
sed
はライン指向であるため、このような場合に使用する方がより複雑です。
をしたい出力について確認してください。行を累積して改行をの間に置き換える必要があります。
text abc\n <- can't replace this one
text abc\ntext def\n <- you can replace the one after "abc" but not the one at the end
このsed
スクリプトは、すべての行を蓄積し、すべての改行を排除しますが、最後:
sed -n '1{x;d};${H;x;s/\n/\t/g;p};{H}'
ところで、あなたのsed
スクリプトsed -e "s_/\n_/\t_g"
はと改行が続くすべてのスラッシュを置き換える」言おうとしていますスラッシュの後にタブが表示されます。アンダースコアはs
コマンドの区切り文字の役割を引き継ぎ、スラッシュを検索や置換のための文字として使いやすくします。
sed '$!{:a;N;s/\n/\t/;ta}' file
あなたは使用しているコマンドについても説明できますか? – Vijay
最後の行でない場合は、次の行をパターンスペースで結合し、改行を代入してから次の行に分岐します。 – ghostdog74
paste -s
-sは コマンドライン順に各別の入力ファイルの行のすべてを連結します。 -dオプションで特に指定されていない限り、各行の改行文字は、 の各入力ファイルの最後の行を除き、 タブ文字に置き換えられます。あなたのsedスクリプトではほとんど存在し
、あなただけにそれを変更する必要があるだろう:
sed -e "s/\n/\t/g"
\
は脱出のために、あなたは_
を追加する必要はありませんそして、あなたがする必要が十分にあります最後にg
の前に/
を追加して、これがスクリプトの最後の部分であることをsedに知らせます。
+1ビート・ミー・40秒 – Nifle
@Nifle:ここでも「cat」はありませんが、誰が数えていますか? :) – Telemachus
「改行」がテキストファイルであることを指摘したいかもしれません。 – Nifle