다음 명령에서는
cat abc.txt|awk -F"[0-9]+." '{print FS $3}'
FS
그러나 일치하는 값 이 해당 필드 구분 기호로 인쇄되기를 [0-9]+.
원합니다 (예: "99"). awk
. 어떻게 할 수 있는지 아시나요?
이것에 대해서는 아래에서 이야기합시다 abc.txt
. 두 번째 문장을 숫자로 구분하고 싶습니다. as를 선택 FS
하고 번호를 인쇄합니다. 출력에서. 기본적으로 ...의 값을 인쇄하고 싶습니다 FS
. 이 요구는 여러 곳에서 발생했습니다.
14. Animals 20. features
1. tiger 1. wild animal
2. cat 2. domestic animal
3. parrot 3. bird with wings
답변1
FS
일치시키려는 문자열의 값을 원하지 않습니다 FS
(같은 줄에 있는 다른 문자열일 수 있음).
> awk -F"[0-9]+." '{ printf "line %3d.: ",NR;
if (NF==1) { print "No FS match in this line"; next; }; str=$0;
for(j=1;j<NF;j++) { match(str, FS); fs_str=substr(str, RSTART, RLENGTH);
printf "_%s_, ",fs_str; str=substr(str, RSTART+RLENGTH)}; print ""; }' file
line 1.: _14._, _20._,
line 2.: _1._, _1._,
line 3.: _2._, _2._,
line 4.: _3._, _3._,
답변2
좋아요gawk
FPAT이를 위해
awk -vFPAT='[[:digit:]]+\\.' 'NF{$1=$1; print}' file
14. 20.
1. 1.
2. 2.
3. 3.