私はサンプルを持っています:
"this is a long title must in a doule quotes" this_is_a_solid_long_line_without_space_or_tabs
"this is a long title must in a doule quotes"
二重引用符で囲まれた長い行なので、カットする必要があります。
this_is_a_solid_long_line_without_space_or_tabs
含まない、または切り捨てる必要がある長い行space
ですtab
。
2つのプロジェクトが分離されています。tab
予想出力:
"this is a long title mus..> this_is_a_solid_long_li..>
..>
長い行を表します。
答え1
元のファイルの列がタブで区切られているとします。
$ awk -v len=20 -F '\t' 'BEGIN { OFS=FS }
{ for (i=1; i<=NF; ++i) if (length($i)>len) $i = substr($i,1,len-3) "..>" }; 1' file
"this is a long t..> this_is_a_solid_l..>
これは各行の列を繰り返し、len
ユーザーが指定した変数よりも長い列がある場合は切り捨てられます。切り捨ては、インジケータ()を含む列の長さが..>
正確にlen
文字であることを確認します。
列が複数のスペースまたはタブ(少なくとも2つ)で区切られていてGNUを使用しているawk
場合は、次のようになります。
awk -v len=20 -F '[[:blank:]]{2,}' 'BEGIN { OFS="\t" }
{ for (i=1; i<=NF; ++i) if (length($i)>len) $i = substr($i,1,len-3) "..>" }; 1' file
これはまだタブ区切りの出力を作成します。