データカットコマンドcutとデータ貼り付けコマンドpastte

9740 ワード

Windowsでは、あるファイルから別のファイルにテキストを移動することがよくあります.Linuxでこのタスクを実行するのはcutとpasteコマンドです.
一、データカットコマンドcut
  • コマンドフォーマット:
  • cut [option] [file]
  • 共通オプション:
  • b:操作するオブジェクトがバイトであることを示す.
    c:操作するオブジェクトが文字であることを示します.
    f:操作するオブジェクトがフィールドであることを示す.
    d:フィールド区切り記号を指定し、デフォルトではタブタブタブタブです.
    s:フィールド区切り記号のない行が含まれていないことを示します.このオプションは、通常、コメントなどを削除するために使用されます.
    切り取り範囲の表示方法は次のとおりです.
    N:Nバイト目、文字またはフィールドを表します.
    N-:Nから1行の終わりまでのすべてのテキストを表します.
    N-M:NからMまでのすべてのテキストを表します.
    M:開始からMまでのすべてのテキストを表します.
    -:開始から終了までのすべてのテキスト.
    上記の範囲を表す方法に加えて、先に行をマッチングした場合のように、「N,M」のような表現方法を用いることもできる.
  • 使用例:
  • Cutカットを使用する場合、カットしたテキストはファイルからでもパイプや他のコマンドの出力からでもかまいません.カットが完了すると、cutはほとんどのテキスト操作コマンドと同様に、既存のファイル(すなわち、既存のテキストの内容を変更しない)を操作するのではなく、結果を標準出力に直接出力します.
    Cutコマンドが動作する場合、テキスト全体を動作単位で切り取ります(つまり、同じ切り取りコマンドがテキストの各行に有効になります).
    (1)バイト数が算出されている場合や特殊なフォーマットを備えたテキストを切り出す場合は,オプションbを用いてバイトごとに切り出すと便利である.
    たとえば、すべての学生の学生番号を切り取るには、学生ごとに10バイトの特殊なフォーマットがあります.
    [root@localhost test]# cut -b-10 students
    
    2821020225
    
    2821020115
    
    2721020321
    
    2921020632
    
    2721010409
    
    2921050313
    
    2721030227

    (2)特定のフィールドの文字の一部を切り取り、オプションcを使用します.たとえば、学生が所属する学部とクラスの番号を切り取ります.
    [root@localhost test]# cut -c5-8 students
    
    0202
    
    0201
    
    0203
    
    0206
    
    0104
    
    0503
    
    0302

    (3)オプションfを使用して複数のフィールドを切り取ります.たとえば、すべての学生の学号、氏名、指導員を切り取ります.
    [root@localhost test]# cut -f1-2,4 students_new 
    
    2821020225      Liulu   Lixia
    
    2821020115      Liumin  lixia
    
    2721020321      Xuli    Luolei
    
    2921020632      Xiayu   Hetao
    
    2721010409      Liwei   tangwei
    
    2921050313      Heli    Tangwei
    
    2721030227      Wangtao Huli

    1-2,4は、1,2,4番目のフィールドを切り取ることを示す.
    (4)フィールド間の区切り文字がタブタブタブでない場合があります.この場合、オプションdを使用して新しいフィールド区切り文字を指定する必要があります.例:
    [root@localhost test]# cut -d# -f1-3 student0
    
    2821020225#Liulu#Sichuan
    
    2821020115#Liumin#Henan
    
    2721020321#Xuli#Jiangsu
    
    2921020632#Xiayu#Shanxi
    
    2721010409#Liwei#Sichuan
    
    2921050313#Heli#Xizang
    
    2721030227#Wangtao#Yunnan

    一般に、cutコマンドの出力は、貼り付け操作を容易にするためにファイルにリダイレクトされます.
    注意:cutを使用してカット操作を実行する場合、必要に応じて、通常、問題が発生した場合に検索しやすいように、レコードを一意に特定できるフィールド、たとえば学番号、シーケンス番号など、1行のシンボルフィールドを一緒にカットします.
    二、データ貼り付けコマンドpaste
    通常、切り取りが完了したら、切り取った内容を別のテキストに貼り付ける必要があります.この場合、データ貼り付けコマンドpasteを使用する必要があります.
  • コマンドフォーマット:
  • paste [option] [file…]
  • 共通オプション:
  • d:新しく生成されたテキストに新しいフィールド区切り記号を指定し、デフォルトはタブタブタブタブです.
    s:貼り付けた内容を行にまとめる(すなわち横貼り付け).
  • 使用例:
  • [root@localhost test]# cat paste1
    
    2821020225
    
    2821020115
    
    2721020321
    
    2921020632
    
    2721010409
    
    2921050313
    
    2721030227
    
    [root@localhost test]# cat paste2
    
    Liulu
    
    Liumin
    
    Xuli
    
    Xiayu
    
    Liwei
    
    Heli
    
    Wangtao
    
    [root@localhost test]# cat paste3
    
    325
    
    280
    
    321
    
    334
    
    356
    
    259
    
    320

    (1)学習番号と成績を一緒に貼り付ける:
    [root@localhost test]# paste paste1 paste3
    
    2821020225      325
    
    2821020115      280
    
    2721020321      321
    
    2921020632      334
    
    2721010409      356
    
    2921050313      259
    
    2721030227      320

    (2)指定された順序で貼り付ける場合は、関連ファイルを順番に入力します.たとえば、成績を先に貼り付けて名前を貼り付けます.
    [root@localhost test]# paste paste3 paste2
    
    325     Liulu
    
    280     Liumin
    
    321     Xuli
    
    334     Xiayu
    
    356     Liwei
    
    259     Heli
    
    320     Wangtao

    (3)横向きの貼り付けも可能であり、これは特殊な場合に有用である.例えば、学生の名前と成績を横向きに貼り付ける:
    [root@localhost test]# paste -s paste2 paste3
    
    Liulu   Liumin  Xuli    Xiayu   Liwei   Heli    Wangtao
    
    325     280     321     334     356     259     320

    (4)pasteで貼り付ける場合、使用するファイルは2つ以上、つまり複数のファイルを同時に貼り付けることができます.複数のファイルを貼り付ける場合、各フィールドに異なる区切り文字を指定できます.
    たとえば、3つのファイルを貼り付ける場合、1、2番目のフィールド間はタブで分割され、2、3番目のフィールド間は「#」で分割されます.
    [root@localhost test]# paste -d'\t#' paste1 paste2 paste3
    
    2821020225      Liulu#325
    
    2821020115      Liumin#280
    
    2721020321      Xuli#321
    
    2921020632      Xiayu#334
    
    2721010409      Liwei#356
    
    2921050313      Heli#259
    
    2721030227      Wangtao#320

    上のコマンドでpasteは、貼り付けを行う際に、指定したドメイン区切り記号を順に使用して、貼り付けたドメインを分割します.
    (5)パイプからのテキストを処理する場合、pasteは「-」を使用してパイプからのテキストを表します.たとえば、テキストpaste 1の各行の前にシーケンス番号を付けます(シーケンス番号はファイルpsに保存されています):
    [root@localhost test]# cat ps
    
    1
    
    2
    
    3
    
    4
    
    5
    
    6
    
    7
    
    [root@localhost test]# cat paste1 | paste -d"#" ps -
    
    1#2821020225
    
    2#2821020115
    
    3#2721020321
    
    4#2921020632
    
    5#2721010409
    
    6#2921050313
    
    7#2721030227

    注:一部のバージョンでは、cutとpasteの2つのコマンドがフィールド区切り記号でフィールドを厳密に分割します.たとえば、タブの前後にスペースがある場合、スペースもフィールドとして扱われます.したがって、切り取りと貼り付けの過程で、出力が正しいまで繰り返してファイルにリダイレクトする必要があります.