行に改行文字を追加する

行に改行文字を追加する

2番目のフィールドを抽出して行に置き換えたいです。

cat > temp1
1   73
2   74
3   75

私のアプローチ:

cut -f2 temp1 | tr '\n'  '\t' > temp2

結果:

temp2
73  74  75  

当然、行の右端にタブ区切り文字がありますが、改行文字はありません。この問題を解決する簡単な方法はありますか?

答え1

paste代わりに使用してくださいtr

$ cut -f2 temp1 | paste -s
73  74  75

見えない空白を確認する

$ cut -f2 temp1 | paste -s | od -c
0000000   7   3  \t   7   4  \t   7   5  \n
0000011

答え2

  cat file | cut -d' ' -f2 | xargs -n3
  73 74 75

見えないすべてのスペースを確認してください。こんにちは

cat file | cut -d' ' -f4 | xargs -n3 |  od -c

0000000   7   3       7   4       7   5  \n
0000011

答え3

新しい行を印刷/放出/提供する最も簡単な方法はを使用することですecho

生成されたファイルに新しい行を追加するのは簡単なようです。

カット-f2 temp1 | tr '\n' '\t' > temp2 エコ >> temp2

これは1行で実行できます。

{ cut -f2 temp1 | tr '\n'  '\t' ; echo ; } > temp2

つまり、末尾のタブが問題にならない場合です。その場合は、それらを削除するか、生成を避ける必要があります。次のいずれかがトリックを実行します。

awk 'NR>1{printf( "%s\t",a)}{a=$2}END{print a}' temp1 >temp2

sed -n 's/[0-9]*[[:blank:]]*//;1{h;d};H;${g;y/\n/\t/;p}' temp1 >temp2

sed 's/[0-9]*[[:blank:]]*//' temp1 | paste -sd '\t' >temp2

関連情報