colrmコマンドはutil-linuxのプログラムで、単純に不要な文字の桁を削除できます。
言い換えるなら、文字数を制限したり、指定した数値の文字桁数の範囲にある文字列を削除できます。
Pythonで例えるなら文字列のスライスに近い機能になります。ただし、日本語の扱いを考えるとPythonのスライスよりは高機能ではありません。
また、colrmコマンドは標準入力からファイルを取得し、出力は標準出力になります。
構文
colrmコマンドの構文
1 |
colrm [first [last]] |
・引数が1つの場合は入力ファイルの行から指定された文字の桁数から後ろの文字が削除されます。
・引数が2つの場合は入力ファイルの行から最初に指定された文字の桁数から次に指定された文字の桁数までの文字を削除します。
colrmコマンドへのファイル入力は、例えば、
1 |
cat file | colrm 80 |
や
1 |
colrm 80 < file |
のような形で利用できます。
指定された文字の桁数から後ろの文字を削除
colrmコマンドの引数が1つの場合の例になります。入力ファイルから指定された文字の桁数から後ろの文字が(指定された文字の桁数の文字を含んで)削除されます。
コマンド例と実行結果
1 2 |
$ echo "abcdef" | colrm 3 ab |
複数行の場合は以下のようになります。
1 2 3 4 5 6 |
$ echo {1..5}"abcdef" | xargs -n1 | colrm 4 1ab 2ab 3ab 4ab 5ab |
指定された文字の桁数の範囲の文字を削除
colrmコマンドの引数が2つの場合の例になります。指定された文字の桁数の範囲の文字が(それぞれ指定された文字の桁数の文字を含んで)削除されます。
コマンド例と実行結果
1 2 |
$ echo "abcdef" | colrm 2 5 af |
複数行の場合は以下のようになります。
1 2 3 4 5 6 |
$ echo {1..5}"abcdef" | xargs -n1 | colrm 3 6 1af 2af 3af 4af 5af |
補足:Pythonでの標準入力からの文字列スライス
以下はPythonでスライスを用いたワンライナーの例です。この例では始めから3文字を表示します。
1 |
python3 -c 'import sys;[print(line[0:3]) for line in sys.stdin] ' |
コマンド例と実行結果
1 2 3 4 5 6 |
$ echo {1..5}"abcdef" | xargs -n1 | python3 -c 'import sys;[print(line[0:3]) for line in sys.stdin] ' 1ab 2ab 3ab 4ab 5ab |
Pythonだとひらがな等の日本語での文字も1文字としてカウントします。
1 2 3 4 5 6 |
$ echo {1..5}"あいうえお" | xargs -n1 | python3 -c 'import sys;[print(line[0:3]) for line in sys.stdin] ' 1あい 2あい 3あい 4あい 5あい |