改行コード変換はtrやPerlを使うやり方がよく知られているけど、AWKだと、RS (input record separator) や ORS (output record separator) を使うと柔軟に変換できるようだ。 awk -v ORS='\r\n' '{print}' < lf.txt > crlf.txt awk -v RS='\r\n' '{print}' < crlf.txt > lf.txt awk -v RS='\r' '{print}' < cr.txt > lf.txt awk -v RS='\r' -v ORS='\r\n' '{print}' < cr.txt > crlf.txt
はじめに 最近、bash, awk, jqにお世話になっております。 特にawkは使い始めたばかりなので、awkを使ってワンラインでexcelのvlookup的なことをやりたいときにどうすればよいのかわからなくて、excelで頑張ってたりしてました。 でもエンジニアならば、excelなんて使わなくてもコマンドラインでぱぱっと操作できたほうが格好いいじゃない?と思ったので挑戦してみます。 目標 以下の2つの表を想定する。 ユーザ一覧を格納した表(users.csv) id name -- ---- 1 一郎 2 二郎 3 三郎 4 四郎 何かしらの条件をみたしたIDの表(condition.csv) id -- 2 4 この2つの表から以下を得たい。 ゴール id name condition -- ---- ---- 1 一郎 F 2 二郎 T 3 三郎 F 4 四郎 T conditio
sedやawkで、指定された範囲の行を除外(というか、削除)したいということがあったので、その備忘。d 以下のように記述して実行してやることで、対象となる範囲の行を除外して出力できる。 sed '/start/,/end/d' PATH awk '/start/,/end/{next}{print}' PATH [root@BS-PUB-CENT7-01 ~]# cat test.txt 111 222 333 444 <span style="color: #ff0000;">start eee ddd sss end</span> 555 666 777 888 999 [root@BS-PUB-CENT7-01 ~]# cat test.txt | sed '/start/,/end/d' 111 222 333 444 555 666 777 888 999 [root@BS-PU
404error お探しのページは移動もしくは削除された可能性がございます。 The page has might be moved or deleted.
awk でちょっと遊んでみたので、その時のメモ。 今回は特定の文字列を含む行を出力するってことをやってみました。 とりあえず、以下のようなファイルを用意します。 ■ test1.txt col1 col2 col3 hoge a b uga c d oro d e hoge f g※ ちなみにファイル内容を全て出力する場合、awk だと「awk '{print}'text1.txt」、「awk '{print $0}'text1.txt」( $0 は現在行全体を意味するみたい ) とかでできます。 上記ファイルで、例えば、col1 が "hoge" である行を出力する場合、以下のコマンドでいける ( まぁ、col1 をヘッダ的に扱うのは微妙ではありますが、何かしらのコマンド出力を操作する場合とか想定して・・・ )。 awk '/hoge/ {print}' test1.txt awk
研究室向けシリーズその1。 研究室用のマニュアルの下書きです。 awk is 何 awkはファイルを行単位で処理することに特化した言語です。ファイル処理に特化したCくらいの認識でひとまずOK インストールwindows版のawkはgawkと呼ばれてます。 1. Gawk forWindowsからComplete package, except sourcesと書いてある物をダウンロード 2. C:\Program Files (x86)\GnuWin32\binにpathを通す。 3. コマンドプロンプトでgawkと打って何か色々出てきたら完了です。 脇道:path通すって? コマンドプロンプトでexeなどを指定するとき、もちろんwindowsが特定できるようにしてあげないと実行することができません。windowsは何か実行ファイル等が指定された時、コマンドプロンプト上で自分が現在いる
awkでCSVを扱うために、gawk 4.0 で FPAT=([^,]+)|(\"[^"]+\") を指定します。 列の値が空文字列の場合 (,,, みたいにカンマが連続する場合)には列数を数え損ねるのですが、FPAT=(,?[^,]+)|(,?\"[^"]+\") と書いたらなんかうまくいきました。 2015-07-04 by matobaa+qiita@gmail.com 制限事項 ダブルクォートの中に改行がある形式には対応していない。 ダブルクォートをエスケープしたものには対応していない。 1列目以外は切り出し文字列の頭に,が入るので、もし加工するなら sub(",","",$N) してから加工して sub("^",",",$N) してやる必要がある。 どういう意味? FPAT は gawk 4.0 以降でつかえる、フィールド切り出しルールを正規表現で指定できる変数です。 [^,]+
awkで2行目以降の行のみで処理を行わせる場合、NR(awkで何行目かを認識する変数)を用いて、以下のようにすればよい。 awk 'NR>1{処理内容}'blacknon@BS-PUB-UBUNTU-01:~$ cat /tmp/test.csv id,user,value 1,aaa,1223 2,bbb,3333 3,ccc,855 4,ddd,998 5,eee,24354 6,fff,345 7,ggg,325 8,hhh,22 9,iii,4657 10,jjj,896blacknon@BS-PUB-UBUNTU-01:~$ awk -F, 'NR>1{print $2}' /tmp/test.csv aaa bbbccc ddd eee fff ggg hhh iii jjj 1行目も出力させる場合は、ifと組み合わせてやればよい。 awk '{if (NR==1)pri
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く