1

これを行う方法がわからないので、助けが必要です。ファイルで作業しており、このファイルの一部の部分文字列のみを抽出する必要があります。各行はセミコロンで区切られています。最初のフィールドと別のフィールドだけが必要です。次のようなもの:

入力ファイル:

nakamed;   ecd.bat  ;\\DomainD\userhome_n\nakamed;"\\DomainD\userhome_n\nakamed";"\\serverfile66\userhome\nakamed";"Migrated from standalone DFS"
tanreka;   ecd.bat serverfile60_D  ;;
tayljka;   ecd.bat  ;\\DomainD\userhome_t\tayljka;"\\DomainD\userhome_t\tayljka";"\\serverfile47\userhome_d\tayljka";"Migrated from standalone DFS"
taylpoo;   ecd.bat  ;\\DomainD\userhome_t\taylpoo;"\\DomainD\userhome_t\taylpoo";"\\serverfile32\userhome\taylpoo";"Migrated from standalone DFS"
thomcet;   ecd.bat  ;\\DomainD\userhome_t\thomcet;"\\DomainD\userhome_t\thomcet";"\\serverfile32\userhome\thomcet";"Migrated from standalone DFS"
thomdop;   ecd.bat  ;\\DomainD\userhome_t\thomdop;"\\DomainD\userhome_t\thomdop";"\\serverfile66\userhome\thomdop";"Migrated from standalone DFS"

目的の出力ファイル:

nakamed;   serverfile66
tanreka;   serverfile60
tayljka;   serverfile47
taylpoo;   serverfile32
thomcet;   serverfile32
thomdop;   serverfile66
4

2 に答える 2

1

を使用してこれを試してくださいsed

sed -r 's/^([a-zA-Z0-9]+);.*(serverfile[0-9]+).*/\1;   \2/' file.txt

またはawk

awk '{print $1, " ", gensub(/.*(serverfile[0-9]+).*/, "\\1", $0)}' file.txt

出力

nakamed;   serverfile66
tanreka;   serverfile60
tayljka;   serverfile47
taylpoo;   serverfile32
thomcet;   serverfile32
thomdop;   serverfile66
于 2013-02-19T16:19:28.213 に答える
1

セミコロンを区切り記号として設定することで、最初のフィールドを出力できます。

awk 'BEGIN { FS = ";" } ; { print $1 }' file
于 2013-02-19T16:19:36.860 に答える