小話
久しぶりの投稿.前回から一ヶ月経ってる...
毎週投稿するつもりではいたのに.
今回はシェルスクリプト?ワンライナー?小話
フォルダ内のファイルに同じ処理をかけたいということがあった.
たとえば,フォルダ内のファイルに含まれる#を@に置換したいみたいな.
基本的に1ファイルでの処理しかやってこなかったので複数ファイルで少し複雑な処理だと手も足もでない.
大人しく制御構文を使って処理する.
``
for i in ${ls}; do sed 's/#/@/' $i > ${i%.txt}_replaced.txt ; done
``
以外と制御構文でも簡単にかける.
驚いたのが,簡単に変数を置換できること.
ワンライナーの本にはあまり制御構文を使わないほうがいいって書いてあったので
ほぼ使わない(使えない)ままきたけどある程度はできたほうがいいな.
次にソートの話.
たとえば,
a,1
a,12
a,4
b,3
こんな感じのcsvファイルがあった時に,1列目を辞書ソート,2列目を数値ソートしたい
その場合は,sortのkオプションで各列毎にソート方法を指定すればよい.
だけど,何度やってもうまくソートできなかった.
大した話じゃないのでオチを先に話すとsortはデフォルトだと区切り文字がスペース.
今までは複数列をソートするパターンがないため気づかなかった.
あと,シェルスクリプトの基礎が身についていない状態でワンライナー書いているので
歯がゆいときが多々ある.
ある程度の分量の処理になるけどどうやるんだ...というパターン.
新しいシェルプログラミングの教科書再販されないかなぁ...
コメント
コメントを投稿