仕事をサボるためのテキストコマンド実例集

Nid: 9
  • Posted on: 31 May 2014
  • By: nayeli

テキストファイルを検索して、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