仕事をサボるためのテキストコマンド実例集
Nid: 9
テキストファイルを検索して、UTF-8へ文字コード変換
$ find /tmp -type f | egrep '/.*\.(txt|text)$' | xargs -d '\n' nkf -w --overwrite
空行削除
$ grep . filename $ sed '/^$/d' ./sample.txt
改行削除、空白文字トリムして、テキストファイルの内容をwindowsクリップボードにコピー(cygwin用)
$ cat abc.txt | tr -d '\n' | sed -e 's/\s*//g' | tee > /dev/clipboard
空白文字トリム、アルファベット大文字から小文字へ変換、行末に文字追加
$ sed -e 's/\s*//g' -e 's/\[A-Z\]/\[a-z\]/g' -e 's/$/,text,text_field \\ /' hotelFields.txt
8行目の末尾に";"を追加
$ sed '8s/$/;/g' abc.txt
前ゼロ奇数連番
$ for i in {1..5..2};do printf "%04d\n" $i;done; 0001 0003 0005
ファイル拡張子を一括変換(.php3 to .php)
$ find -name "*.php3" | sed 's/\(.*\).php3$/mv "&" "\1.php"/' | sh
先頭に#がある行を削除、バックアップファイルも作成
$ sed -i.bak '\^#/d' madonna.gqmpeg $ perl -i.bak -ne 'print unless /^#/' script.sh
htmlタグ削除
$ sed -e 's/<[^>]*>//g'
デリミタを指定して、特定列のデータ出力
$ cut -d, -f3,5 specTable.csv $ cut -d: -f1 /etc/passwd $ perl -F: -lane 'print $F[0]' /etc/passwd
スペース区切りで、ファイルを列方向に結合
$ cat > id.txt 001 002 007 $ cat > name.txt okinawa tokyo james $ paste -d" " id.txt name.txt | tee list.txt 001 flight 002 houston 007 bond
ファイルから行読み込み、配列代入
$ cat list.txt 1 a 2 c 3 z $ cat list.txt | while read line do a=($line) echo "${a[0]}: ${a[1]}" done 1: a 2: c 3: z