GNU/Linux >> Linux の 問題 >  >> Linux

Linuxで効果的なファイル操作を行うためにテキストをフィルタリングするための12の便利なコマンド

この記事では、Linuxでフィルターとして機能するいくつかのコマンドラインツールを確認します。 フィルター は、標準入力を読み取り、それに対して操作を実行し、結果を標準出力に書き込むプログラムです。

このため、出力を再構築して有用なレポートを生成したり、ファイル内のテキストを変更したり、その他の多くのシステム管理タスクを実行したりするなど、強力な方法で情報を処理するために使用できます。

そうは言っても、以下はLinuxで役立つファイルまたはテキストフィルターの一部です。

1。 Awkコマンド

Awk は注目に値するパターンスキャンおよび処理言語であり、Linuxで有用なフィルターを構築するために使用できます。 Awkシリーズのパート1からパート13を読むことで、使用を開始できます。

さらに、 awkもお読みください 詳細と使用オプションのマニュアルページ:

 $ man awk 

2。 Sedコマンド

sed は、テキストをフィルタリングおよび変換するための強力なストリームエディタです。 sedに関する2つの便利な記事をすでに書いていますので、ここで確認できます:

  1. GNUの「sed」コマンドを使用してLinuxでファイルを作成、編集、操作する方法
  2. 15日常のLinuxシステム管理タスクに役立つ「sed」コマンドのヒントとコツ

sedのマニュアルページに制御オプションと手順が追加されました:

 $ man sed 

3。 Grep、Egrep、Fgrep、Rgrepコマンド

これらのフィルターは、特定のパターンに一致するラインを出力します。ファイルまたは標準入力から行を読み取り、一致するすべての行をデフォルトで標準出力に出力します。

注 :メインプログラムはgrepであり、バリエーションは以下の特定のgrepオプションを使用する場合と同じです(下位互換性のために引き続き使用されます):

 $ egrep =grep -E $ fgrep =grep -F $ rgrep =grep -r 

以下は、いくつかの基本的なgrepコマンドです。

  [メール保護]〜 $  grep "aaronkilik" / etc / passwd  aaronkilik:x:1001:1001 ::/ home / aaronkilik:  [メール保護]〜 $  cat / etc / passwd | grep "aronkilik"  aaronkilik:x:1001:1001 ::/ home / aaronkilik: 

LinuxでのGrep、Egrep、Fgrepの違いについて詳しく読むことができます。

4。ヘッドコマンド

ファイルの最初の部分を表示するために使用され、最初の 10を出力します デフォルトでは行。 -nを使用できます 表示する行数を指定するnumフラグ:

  [メール保護]〜 $   head /var/log/auth.log  Jan 2 10:45:01 TecMint CRON [3383]:pam_unix(cron:session):(uid =0)によってユーザーrootに対してセッションが開かれましたJan 2 10:45:01 TecMint CRON [3383]:pam_unix(cron:session) :ユーザーrootJan2のセッションが閉じられました10:51:34TecMint sudo:tecmint:TTY =unknown; PWD =/ home / tecmint; USER =root; COMMAND =/usr/lib/linuxmint/mintUpdate/checkAPT.pyJan 2 10:51:34 TecMint sudo:pam_unix(sudo:session):(uid =0)Jan 2 10:51:39TecMintsudoによってユーザーrootに対してセッションが開かれました:pam_unix(sudo:session):ユーザーrootJan2のセッションが閉じられました10:55:01TecMint CRON [4099]:pam_unix(cron:session):(uid =0)Jan210:55:01によってユーザーrootのセッションが開かれましたTecMint CRON [4099]:pam_unix(cron:session):ユーザーrootJan2に対してセッションが閉じられました11:05:01TecMint CRON [4138]:pam_unix(cron:session):(uid =0)Jan2によってユーザーrootに対してセッションが開かれました11:05:01 TecMint CRON [4138]:pam_unix(cron:session):ユーザーrootのセッションが閉じられました1月2日11:09:01 TecMint CRON [4146]:pam_unix(cron:session):(uidによってユーザーrootのセッションが開かれました=0) [メールで保護]〜 $   head -n 5 /var/log/auth.log  Jan 2 10:45:01 TecMint CRON [3383]:pam_unix(cron:session):(uid =0)によってユーザーrootに対してセッションが開かれましたJan 2 10:45:01 TecMint CRON [3383]:pam_unix(cron:session) :ユーザーrootJan2のセッションが閉じられました10:51:34TecMint sudo:tecmint:TTY =unknown; PWD =/ home / tecmint; USER =root; COMMAND =/usr/lib/linuxmint/mintUpdate/checkAPT.pyJan 2 10:51:34 TecMint sudo:pam_unix(sudo:session):(uid =0)Jan 2 10:51:39TecMintsudoによってユーザーrootに対してセッションが開かれました:pam_unix(sudo:session):ユーザーrootのセッションが閉じられました

Linuxで効果的に使用するためにheadコマンドをtailおよびcatコマンドと一緒に使用する方法を学びます。

5。テールコマンド

テール 最後の部分を出力します( 10 ファイルのデフォルトの行)。 -nを使用します 表示する行数を指定するnumスイッチ。

以下のコマンドは、最後の 5を出力します 指定されたファイルの行:

  [メール保護]〜 $   tail -n 5 /var/log/auth.log  Jan 6 13:01:27 TecMint sshd [1269]:サーバーが0.0.0.0ポート22でリッスンしています。Jan613:01:27 TecMint sshd [1269]:サーバーが::ポート22でリッスンしています。Jan613:01:27 TecMint sshd [1269]:SIGHUPを受信しました。 restarting.Jan 6 13:01:27 TecMint sshd [1269]:サーバーが0.0.0.0ポート22でリッスンしています。Jan613:01:27 TecMint sshd [1269]:サーバーが::ポート22でリッスンしています。

さらに、テール 特別なオプション-fがあります ファイル(特にログファイル)の変更をリアルタイムで監視するため。

次のコマンドを使用すると、指定したファイルの変更を監視できます。

  [メール保護]〜 $   tail -f /var/log/auth.log  Jan 6 12:58:01 TecMint sshd [1269]:サーバーが::ポート22でリッスンしています。Jan612:58:11 TecMint sshd [1269]:SIGHUPを受信しました。 restarting.Jan 6 12:58:12 TecMint sshd [1269]:サーバーが0.0.0.0ポート22でリッスンしています。Jan612:58:12 TecMint sshd [1269]:サーバーが::ポート22.Jan613:01でリッスンしています。 :27 TecMint sshd [1269]:SIGHUPを受信しました。 restarting.Jan 6 13:01:27 TecMint sshd [1269]:サーバーが0.0.0.0ポート22でリッスンしています。Jan613:01:27 TecMint sshd [1269]:サーバーが::ポート22.Jan613:01でリッスンしています。 :27 TecMint sshd [1269]:SIGHUPを受信しました。 restarting.Jan 6 13:01:27 TecMint sshd [1269]:サーバーが0.0.0.0ポート22でリッスンしています。Jan613:01:27 TecMint sshd [1269]:サーバーが::ポート22でリッスンしています。

テールを読み通す 使用オプションと手順の完全なリストについては、manページを参照してください:

$マンテール

6。並べ替えコマンド

並べ替え テキストファイルの行を並べ替えたり、標準の入力から並べ替えたりするために使用されます。

以下は、 domains.listという名前のファイルの内容です。 :

  [メール保護]〜 $   catdomains.list  tecmint.comtecmint.comnews.tecmint.comnews.tecmint.comlinuxsay.comlinuxsay.comwindowsmint.comwindowsmint.com 

簡単な並べ替えコマンドを実行して、次のようにファイルの内容を並べ替えることができます。

  [メール保護]〜 $  domains.listを並べ替える linuxsay.comlinuxsay.comnews.tecmint.comnews.tecmint.comtecmint.comtecmint.comwindowsmint.comwindowsmint.com 

並べ替えを使用できます 多くの方法でコマンドを実行するには、次のように並べ替えコマンドに関する役立つ記事をいくつか読んでください。

  1. 14 Linuxの「sort」コマンドの便利な例–パート1
  2. 7興味深いLinuxの「ソート」コマンドの例–パート2
  3. 変更日時に基づいてファイルを検索および並べ替える方法
  4. 「ls」コマンドの出力を最終更新日時で並べ替える方法

7。 uniqコマンド

uniq コマンドは、繰り返される行を報告または省略するために使用され、標準入力からの行をフィルタリングし、結果を標準出力に書き込みます。

並べ替えを実行した後 入力ストリームでは、 uniqを使用して繰り返し行を削除できます 以下の例のように。

行の出現回数を示すには、 -cを使用します オプションを選択し、 -i を含めて比較する際に、大文字と小文字の違いを無視します オプション:

  [メール保護]〜 $   catdomains.list  tecmint.comtecmint.comnews.tecmint.comnews.tecmint.comlinuxsay.comlinuxsay.comwindowsmint.com  [メール保護]〜 $  ソートdomains.list| uniq -c  2 linuxsay.com2 news.tecmint.com2 tecmint.com1 windowsmint.com 

uniqを読み通す 詳細な使用情報とフラグのマニュアルページ:

 $ man uniq 

8。 fmtコマンド

fmt シンプルな最適なテキストフォーマッタで、指定したファイルの段落を再フォーマットし、結果を標準出力に出力します。

以下は、ファイル domain-list.txtから抽出されたコンテンツです。 :

 1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com 

上記のコンテンツを標準リストに再フォーマットするには、 -wを指定して次のコマンドを実行します スイッチは最大線幅を定義するために使用されます:

  tecmint [メール保護]〜 $   cat domain-list.txt  1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com  [メール保護]〜 $   fmt -w 1 domain-list.txt  1.tecmint.com 2.news.tecmint.com 3.linuxsay.com 4.windowsmint.com 

9。 prコマンド

pr コマンドは、テキストファイルまたは標準入力を印刷用に変換します。たとえば、 Debian システムの場合、インストールされているすべてのパッケージを次のように一覧表示できます。

 $ dpkg -l <​​/ pre> 

印刷可能なページと列にリストを整理するには、次のコマンドを発行します。

  [メール保護]〜 $   dpkg -l | pr --columns 3 -l 20  2017-01-0613:19ページ1Desired=Unknown / Install ii adduser ii apg | Status =Not / Inst / Conf- ii adwaita-icon-theme ii app-install-data | / Err?=(none)/ Reinst-r ii adwaita-icon-theme- ii apparmor || / Name ii alsa-base ii apt +++-===================ii alsa-utils ii apt-cloneii accountservice ii anacron ii apt-transport-httpsii acl ii apache2 ii apt-utilsii acpi-support ii apache2 -bin ii apt-xapian-indexii acpid ii apache2-data ii aptdaemonii add-apt-key ii apache2-utils ii aptdaemon-data2017-01-06 13:19 Page 2ii aptitude ii avahi-daemon ii bind9-hostii aptitude-common ii avahi-utils ii binfmt-supportii apturl ii aview ii binutilsii apturl-common ii banshee ii bisonii archdetect-deb ii baobab ii bltii aspell ii base-files ii blueberryii aspell-en ii base-passwd ii bluetoothii at-spi2-core ii b bluezii attr ii bash-completion ii bluez-cupsii avahi-autoipd ii bc ii bluez-obexd ..... 

ここで使用されるフラグは次のとおりです。

  1. -列 出力で作成される列の数を定義します。
  2. -l <​​/ code> ページの長さを指定します(デフォルトは66行です)。

10。 trコマンド

このツールは、標準入力から文字を変換または削除し、結果を標準出力に書き込みます。

trを使用するための構文 は次のとおりです:

 $ tr options set1 set2 

以下の例を見てください。最初のコマンドで、 set1([:upper:]) 入力文字の大文字小文字を表します(すべて大文字)。

次に、 set2([:lower:]) 結果の文字がに​​なる場合を表します。 2番目の例とエスケープシーケンス\nでも同じです 新しい行に出力を印刷することを意味します:

  [メール保護]〜 $  エコー"WWW.TECMINT.COM"| tr [:upper:] [:lower:]  www.tecmint.com  [メール保護]〜 $   echo "news.tecmint.com" | tr [:lower:] [:upper:]  NEWS.TECMINT.COM 

11。その他のコマンド

もっと コマンドは、基本的に証明書を表示するために作成された便利なファイル閲覧フィルターです。ユーザーが[Enter]を押すことができる形式のようなページでファイルコンテンツを表示します 詳細を表示するには。

このように大きなファイルを表示するために使用できます:

  [メール保護]〜 $   dmesg |もっと [0.000000] cgroupsubsyscpusetの初期化[0.000000]cgroupsubsyscpuの初期化[0.000000]cgroupsubsyscpuacctの初期化[0.000000]Linuxバージョン4.4.0-21-generic([email protected])(gccバージョン5.3.1 20160413(Ubuntu5.3。 1-14ubuntu2))#37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016(Ubuntu 4.4.0-21.37-generic 4.4.6)[0.000000]コマンドライン:BOOT_IMAGE =/ boot / vmlinuz-4.4.0- 21-generic root =UUID =bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b roquietsplash vt.handoff =7 [0.000000] KERNEL対応CPU:[0.000000] Intel GenuineIntel [0.000000] AMD AuthenticAMD [0.000000] Centaur CentaurHauls [0.000000] x86 / fpu:xstate_offset [2]:576、xstate_sizes [2]:256 [0.000000] x86 / fpu:XSAVE機能のサポート0x01:'x87フローティングポイントレジスタ'[0.000000] x86 / fpu:XSAVE機能のサポート0x02:'SSEレジスタ' [0.000000] x86 / fpu:XSAVE機能のサポート0x04:'AVXレジスタ'[0.000000] x86 / fpu:有効なxstate機能0x7、コンテキストサイズは832バイトs、「標準」形式を使用。[0.000000] x86 / fpu:「熱心な」FPUコンテキストスイッチを使用。[0.000000] e820:BIOS提供の物理RAMマップ:[0.000000] BIOS-e820:[mem0x0000000000000000-0x000000000009d3ff]使用可能[ 0.000000] BIOS-e820:[mem0x000000000009d400-0x000000000009ffff]予約済み[0.000000]BIOS-e820:[mem0x00000000000e0000-0x00000000000fffff]予約済み[0.000000]BIOS-e820:[mem0x0000000000100000-0x00000000a56affff]使用可能[0.000000]BIOS-e820:[mem 0x00000000a56b0000-0x00000000a5eaffff]予約済み[0.000000]BIOS-e820:[mem0x00000000a5eb0000-0x00000000aaabefff]使用可能-その他- 

12。より少ないコマンド

少ない もっとの反対です 上記のコマンドですが、追加の機能を提供し、大きなファイルを使用すると少し高速になります。

moreと同じように使用します:

  [メール保護]〜 $   dmesg |少ない [0.000000] cgroupsubsyscpusetの初期化[0.000000]cgroupsubsyscpuの初期化[0.000000]cgroupsubsyscpuacctの初期化[0.000000]Linuxバージョン4.4.0-21-generic([email protected])(gccバージョン5.3.1 20160413(Ubuntu5.3。 1-14ubuntu2))#37-Ubuntu SMP Mon Apr 18 18:33:37 UTC 2016(Ubuntu 4.4.0-21.37-generic 4.4.6)[0.000000]コマンドライン:BOOT_IMAGE =/ boot / vmlinuz-4.4.0- 21-generic root =UUID =bb29dda3-bdaa-4b39-86cf-4a6dc9634a1b roquietsplash vt.handoff =7 [0.000000] KERNEL対応CPU:[0.000000] Intel GenuineIntel [0.000000] AMD AuthenticAMD [0.000000] Centaur CentaurHauls [0.000000] x86 / fpu:xstate_offset [2]:576、xstate_sizes [2]:256 [0.000000] x86 / fpu:XSAVE機能のサポート0x01:'x87フローティングポイントレジスタ'[0.000000] x86 / fpu:XSAVE機能のサポート0x02:'SSEレジスタ' [0.000000] x86 / fpu:XSAVE機能のサポート0x04:'AVXレジスタ'[0.000000] x86 / fpu:有効なxstate機能0x7、コンテキストサイズは832バイトs、「標準」形式を使用。[0.000000] x86 / fpu:「熱心な」FPUコンテキストスイッチを使用。[0.000000] e820:BIOS提供の物理RAMマップ:[0.000000] BIOS-e820:[mem0x0000000000000000-0x000000000009d3ff]使用可能[ 0.000000] BIOS-e820:[mem0x000000000009d400-0x000000000009ffff]予約済み[0.000000]BIOS-e820:[mem0x00000000000e0000-0x00000000000fffff]予約済み[0.000000]BIOS-e820:[mem0x0000000000100000-0x00000000a56affff]使用可能[0.000000]BIOS-e820:[mem 0x00000000a56b0000-0x00000000a5eaffff]予約済み[0.000000]BIOS-e820:[mem 0x00000000a5eb0000-0x00000000aaabefff]使用可能:

Linuxで効果的なファイルナビゲーションを行うために、「少ない」が「多い」コマンドよりも高速である理由を学びましょう。

今のところこれですべてです。ここに記載されていない、Linuxでテキストフィルターとして機能する便利なコマンドラインツールについては、以下のコメントセクションからお知らせください。


Linux
  1. 効果的なプロセス管理のための8つのLinuxコマンド

  2. ネットワーク診断用の10のLinuxコマンド

  3. テキスト操作のための3つの必知のLinuxコマンド

  1. LinuxファンのためのFreeDOSコマンド

  2. 3システム管理者に役立つLinuxコマンド

  3. テキストをファイルに書き込むためにLinuxのcatコマンドを使用できますか?

  1. Linuxでファイルタイプとシステム時間を管理するための5つの便利なコマンド–パート3

  2. sysadminsのための5つのあいまいだが有用なLinuxコマンド

  3. 新規ユーザー向けの8つの重要なLinuxファイルナビゲーションコマンド