2016-09-30 5 views
1

これは既にカバーされている場合は申し訳ありません。私はそれに合ったものを見つけることに失敗した。他のフィールドを失うことなくテキストの中間フィールドを短くする方法

可変長フィールドのテキストファイルがある場合、他のフィールドを犠牲にすることなく、どのように1つのフィールドを切り捨てることができますか?例;

firstField secondfieldisthislong thirdField 
firstField secondfieldisreallylongandgoesonforever thirdField 
firstField secondshortfield thirdField 

固定長に第2フィールドを切り捨てたいと思います。 Cutはこれを行うことができないようで、私のawk/sedスキルはあまり良くありません。ありがとう。 awk

答えて

4

awk '{$2 = substr($2, 1, 10)}; 1' file.txt 

したい文字の長さで10を交換してください。

ここでは、2番目のフィールドが目的の長さに切り捨てられたレコードを再構築しています。

substr($2, offset, length)は、offsetからlength文字までの文字列スライスを行います。

例:GNUで

% cat file.txt        
firstField secondfieldisthislong thirdField 
firstField secondfieldisreallylongandgoesonforever thirdField 
firstField secondshortfield thirdField 

% awk '{$2 = substr($2, 1, 6)}; 1' file.txt 
firstField second thirdField 
firstField second thirdField 
firstField second thirdField 

% awk '{$2 = substr($2, 1, 10)}; 1' file.txt 
firstField secondfiel thirdField 
firstField secondfiel thirdField 
firstField secondshor thirdField 
0

はsedを:

$ sed -r 's/(.* .{6}).* /\1 /' <<< "firstField secondfieldisreallylongandgoesonforever thirdField" 
firstField second thirdField 
関連する問題