1

MAC ベンダーのリストがあり、テキストを解析して不要な情報を削除する必要があります。

これがあれば

F8FEA8 Technico # Technico Japan Corporation
F8FF5F Shenzhen # Shenzhen Communication Technology Co.,Ltd
FC0012 ToshibaS # Toshiba Samsung Storage Technolgoy Korea Corporation
FC019E Vievu
FC01CD Fundacio # FUNDACION TEKNIKER
FC0647 Cortland # Cortland Research, LLC
FC0877 PrentkeR
FC0A81 Motorola # Motorola Solutions Inc.

これを行うには、すべての[スペース][単語][#]を削除する必要があります

F8FEA8 Technico Japan Corporation
F8FF5F Shenzhen Communication Technology Co.,Ltd
FC0012 Toshiba Samsung Storage Technolgoy Korea Corporation
FC019E Vievu
FC01CD FUNDACION TEKNIKER
FC0647 Cortland Research, LLC
FC0877 PrentkeR
FC0A81 Motorola Solutions Inc.

grepまたはsedで実行できますか? :S

私の悪い英語でごめんなさい

4

5 に答える 5

4

シェルのみのソリューションは次のとおりです。

while read A B C D;do
  [ "$C" == "#" ] && echo "$A $D" || echo "$A $B $C $D"
done < infile.txt >outfile.txt
于 2013-09-29T02:26:59.753 に答える
4

これはあなたのために働くかもしれません(GNU sed):

sed -ri 's/\s\S+\s#//' file

また:

sed -i 's/ [^ ][^ ]* #//' file

つまり、スペースの後に 1 つ以上の非スペースが続き、別のスペースが続き、その後に a が続くものを探して、#その式を削除します。ファイルはその場で更新されます。これが-iオプションの意味です-r。最初のソリューションのオプションをsyntatic sugar使用できます。この場合は、または\S+の代わりに書き込むことができます。\S\+[^ ][^ ]*

于 2013-09-29T05:53:34.203 に答える
2

#発生時にフィールド 3 で自立すると仮定すると、次のソリューションが機能する可能性があります。

awk '$3 == "#"{t=$1; $1=$2=$3=""; sub(/^[[:space:]]+/, ""); $0=t" "$0}; 
     {print}' file.txt
于 2013-09-28T23:55:48.393 に答える
2

簡単に解析できるようです。を使用したソリューション。空白に基づいてフィールドに行を分割し、3 番目の行が#削除された場合は前の行を削除します。

perl -lane 'if ( $F[2] eq q|#| ) { @F = @F[0,3..$#F] }; print qq|@F|' infile

次の結果が得られます。

F8FEA8 Technico Japan Corporation
F8FF5F Shenzhen Communication Technology Co.,Ltd
FC0012 Toshiba Samsung Storage Technolgoy Korea Corporation
FC019E Vievu
FC01CD FUNDACION TEKNIKER
FC0647 Cortland Research, LLC
FC0877 PrentkeR
FC0A81 Motorola Solutions Inc.
于 2013-09-28T23:40:12.327 に答える
2

もっとawk

awk -F" # [^ ]+ " '{$1=$1}1' file # more robust
awk -F" # [^ ]+ " '$1=$1' file    # some dangerous, do not use if $1=0

これにより、フィールドセパレーターが削除したいものと同じに設定され、残りが出力されます。

awk '{sub(/ # [^ ]+/,x)}1' file

これは、不要なものを削除するだけです。

于 2013-09-29T07:42:41.030 に答える