FreeStyleWiki

シェル芸

このエントリーをはてなブックマークに追加

[shell]

Bash等の覚え書き

  sed

複数行を単一行化

これは色んな人が考えるけどオプションがわからないために諦めるやつだと思う

  • 最終行に達するまで N コマンドでひたすら入力をパターン・スペースに詰め込んでいき、最後に g オプションつきの置換コマンドで一気に改行を削除するオプション。
:a
$! {
 N; ba 
}
s/\n//g

やってみる

$ cat test.txt
1,first
2,second
3,third
4,fourth
5,fifth

$ sed ':a;N;$!ba;s/\n//g' test.txt
1,first2,second3,third4,fourth5,fifth

これは応用が効きそうだ

  インクルード

source ./shell.sh

  日付の読み込み

${someday}で読み込んだ日付に一日プラス

date '+%Y-%m-%d' -d "${someday} + 1 day"

  xargs

ファイル名をリストしてそこから拡張子を抜く

  • .nasファイルをリストする場合
$ find . -name \*.nas -print | xargs -n 1 -I @ sh -c 'echo `basename "@" .nas`' 

findで見つけたファイルのディレクトリにcd

$ cd "$(find /media/storage -name "Fedora" -printf '%h' -quit)"

  exiftool

exiftoolの結果をjqでパース

$ exiftool 'LoRA Modeler Efficiency ComfyUI_00741_.png' | grep Prompt | awk -F' : ' '{print $2}' | jq