<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Linux on Marketechlabo</title><link>https://www.marketechlabo.com/tags/linux/</link><description>Recent content in Linux on Marketechlabo</description><generator>Hugo -- gohugo.io</generator><language>ja-jp</language><lastBuildDate>Tue, 09 Apr 2019 00:00:00 +0900</lastBuildDate><atom:link href="https://www.marketechlabo.com/tags/linux/index.xml" rel="self" type="application/rss+xml"/><item><title>linuxのテキスト編集（vi, sed, tr, grepなど＋xargs）まとめ</title><link>https://www.marketechlabo.com/server-infrastructure/linux-commands-text-processing/</link><pubDate>Tue, 09 Apr 2019 00:00:00 +0900</pubDate><guid>https://www.marketechlabo.com/server-infrastructure/linux-commands-text-processing/</guid><description>
&lt;p&gt;linuxなどで使うテキスト編集コマンドの使い方で、これさえ知っていればOKというもののまとめ（vi, sed, grep, sort, uniq, cut, join, tr, iconv, diff）。
後半は特に必要とはいえないため適当。重要なのはvi, sed, grepまでかな。
複数のファイルを扱う場合に使うxargsコマンドについても説明する。
テキスト検索にはripgrep（&lt;code&gt;rg&lt;/code&gt;）やfzfなどのモダンなツールもあるが、本記事では基本的なコマンドに絞る。&lt;/p&gt;
&lt;h2 id="vi"&gt;vi&lt;/h2&gt;
&lt;p&gt;※（数指定）のついているものは、コマンドの前に数を指定することで指定された数だけ該当する操作を行える。
（&lt;code&gt;6h&lt;/code&gt;で6字分左に移動）&lt;/p&gt;
&lt;h3 id="コマンドモードと入力モード"&gt;コマンドモードと入力モード&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;コマンドモード→入力モード
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;i&lt;/code&gt;: カーソルの直前に挿入（insert）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;I&lt;/code&gt;: カーソル行の最初に挿入&lt;/li&gt;
&lt;li&gt;&lt;code&gt;a&lt;/code&gt;: カーソルの直後に挿入（add）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;A&lt;/code&gt;: カーソル行の最後に挿入&lt;/li&gt;
&lt;li&gt;&lt;code&gt;o&lt;/code&gt;: カーソルの下の行に挿入&lt;/li&gt;
&lt;li&gt;&lt;code&gt;O&lt;/code&gt;: カーソルの上の行に挿入&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;入力モード→コマンドモード: &lt;code&gt;ESC&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="移動"&gt;移動&lt;/h3&gt;
&lt;p&gt;（ちょうど右手のホームポジション）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;h&lt;/code&gt;: 左（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;j&lt;/code&gt;: 下（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;k&lt;/code&gt;: 上（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;l&lt;/code&gt;: 右（数指定）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（ページ移動）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl-b&lt;/code&gt;: PgUp（back）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl-f&lt;/code&gt;: PgDn（forward）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（行内）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;^&lt;/code&gt;: 行頭（正規表現）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$&lt;/code&gt;: 行末（正規表現）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（行指定）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Ctrl-g&lt;/code&gt;: 現在の行表示&lt;/li&gt;
&lt;li&gt;&lt;code&gt;G&lt;/code&gt;: 最終行&lt;/li&gt;
&lt;li&gt;&lt;code&gt;数字G&lt;/code&gt;: 指定行に移動&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="コピーカットペースト"&gt;コピー、カット、ペースト&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;x&lt;/code&gt;: 文字削除（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dw&lt;/code&gt;: 単語削除（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yw&lt;/code&gt;: 単語コピー（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;dd&lt;/code&gt;: 行削除（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;yy&lt;/code&gt;: 行コピー（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;p&lt;/code&gt;: カーソルの下に貼り付け&lt;/li&gt;
&lt;li&gt;&lt;code&gt;P&lt;/code&gt;: カーソル行に貼り付け&lt;/li&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt;: カーソル位置の文字を修正、上書き（数指定）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Ctrl-h&lt;/code&gt;: Back Space&lt;/li&gt;
&lt;li&gt;&lt;code&gt;J&lt;/code&gt;: カーソル行と次行を連結する&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="undoredo"&gt;undo,redo&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;u&lt;/code&gt;: 直前の作業の取り消し&lt;/li&gt;
&lt;li&gt;&lt;code&gt;.&lt;/code&gt;: 直前の作業の繰り返し&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="検索置換"&gt;検索、置換&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:/文字列&lt;/code&gt;: 文字列の検索（/.はエスケープが必要）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;n&lt;/code&gt;: 下方向への検索&lt;/li&gt;
&lt;li&gt;&lt;code&gt;N&lt;/code&gt;: 上方向への検索&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:%s/文字列1/文字列2/g&lt;/code&gt;: ファイル内の文字列1を文字列2に置換（全箇所）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="便利なコマンド"&gt;便利なコマンド&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:!コマンド&lt;/code&gt;: ローカルコマンド実行&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="設定"&gt;設定&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;.swpファイルを生成しない。
&lt;code&gt;:set noswapfile&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;.swpファイルを生成する。
&lt;code&gt;:set swapfile&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="ファイルを開く"&gt;ファイルを開く&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:e ../toedit.txt&lt;/code&gt;: 指定したパスのファイルを開く&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="保存終了"&gt;保存、終了&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;:w!&lt;/code&gt;: 保存&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:q!&lt;/code&gt;: 終了&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:wq!&lt;/code&gt;: 保存して終了&lt;/li&gt;
&lt;li&gt;&lt;code&gt;:w ファイル名&lt;/code&gt;: ファイル名として保存&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="sed"&gt;sed&lt;/h2&gt;
&lt;p&gt;行や文字列の置換、削除、抽出を行うコマンド&lt;/p&gt;</description></item></channel></rss>