bash를 사용하여 각 행의 마지막 단어를 얻으려면 어떻게 해야 합니까?
예를 들어 다음과 같은 파일이 있습니다.
$ cat file
i am the first example.
i am the second line.
i do a question about a file.
그리고 나는 다음이 필요하다.
example, line, file
'awk'를 의도하고 있지만, 문제는 단어들이 다른 공간에 있다는 것이다.
해라
$ awk 'NF>1{print $NF}' file
example.
line.
file.
예시와 같이 한 줄로 결과를 얻으려면 다음과 같이 하십시오.
{
sub(/\./, ",", $NF)
str = str$NF
}
END { print str }
출력:
$ awk -f script.awk file
example, line, file,
순수 배시:
$ while read line; do [ -z "$line" ] && continue ;echo ${line##* }; done < file
example.
line.
file.
GREP를 사용하면 간단하게 할 수 있습니다.
grep -oE '[^ ]+$' file
(-E
확장 정규식을 사용한다.-o
전체 행이 아닌 일치하는 텍스트만 출력합니다.
다음과 같은 작업을 수행할 수 있습니다.
awk '{ print $NF }'
편집: 행이 비어 있지 않도록 하려면:
awk 'NF{ print $NF }'
이것을 플레인 배시로 하는 또 다른 방법은,rev
명령어는 다음과 같습니다.
cat file | rev | cut -d" " -f1 | rev | tr -d "." | tr "\n" ","
기본적으로는 파일의 행을 반대로 한 다음 분할합니다.cut
구분 기호로 공백을 사용하여 다음 첫 번째 필드를 선택합니다.cut
토큰을 생성하고 다시 되돌립니다.tr -d
불필요한 문자를 삭제하다tr
줄바꿈 문자를 다시 바꿉니다.,
또, 다음의 방법으로 첫 번째 고양이를 피할 수 있습니다.
rev < file | cut -d" " -f1 | rev | tr -d "." | tr "\n" ","
tldr;
$ awk '{print $NF}' file.txt | paste -sd, | sed 's/,/, /g'
이런 파일에는
$ cat file.txt
The quick brown fox
jumps over
the lazy dog.
지정된 명령어가 출력됩니다.
fox, over, dog.
구조:
awk '{print $NF}'
: 각 행의 마지막 필드를 인쇄합니다.paste -sd,
: 읽기stdin
시리얼 (-s
, 한 번에 1개의 파일) 및 필드를 쉼표로 구분하여 씁니다( ).-d,
)sed 's/,/, /g'
:s
Ubitutes(부재)","
와 함께", "
g
lobally(모든 인스턴스)
참고 자료:
여러 가지 방법이 있다.~하듯이awk
솔루션에서 알 수 있듯이 깨끗한 솔루션입니다.
sed 솔루션은 마지막 공백까지 삭제하는 것입니다.그래서 끝에 공간이 없으면 작동해야 합니다.
sed 's/.* //g' <file>
피할 수 있다sed
그리고 또 한 번지while
고리.
while read line
do [ -z "$line" ] && continue ;
echo $line|rev|cut -f1 -d' '|rev
done < file
행을 읽고 존중하며 첫 번째(즉, 원본의 마지막)를 자르고 복원한다.
같은 방법으로 할 수 있다
while read line
do [ -z "$line" ] && continue ;
echo ${line##* }
done < file
파라미터 확장이라고 불립니다.
마지막 워드에 대해 perl 원라이너를 시작하는 경우:
perl -lane 'print "$F[-1]"'
...어디에-a
에 자동 플릿을 부여하다@F
그리고.$F[-1]
마지막 요소입니다.
쉼표가 있는 목록으로 변환하려면:
perl -ane 'print "$F[-1]" . (eof() ? "\n":",")'
언급URL : https://stackoverflow.com/questions/16616975/how-do-i-get-the-last-word-in-each-line-with-bash
'itsource' 카테고리의 다른 글
PS1과 PROMT_COMMAND의 차이점은 무엇입니까? (0) | 2023.04.22 |
---|---|
잠재적으로 위험한 요청입니다.클라이언트(*)에서 경로 값이 탐지되었습니다. (0) | 2023.04.22 |
선언한 행과 같은 행에서 C# 목록을 초기화하려면 어떻게 해야 합니까(IEnumerable String Collection 예) (0) | 2023.04.22 |
Mongoose Error [Mongoose Server Selection Error] : 52.6.250.237:27017에 대한 연결이 닫혔습니다. (0) | 2023.04.22 |
Swift를 사용하여 iOS에서 문자열을 MD5 해시로 변환하려면 어떻게 해야 합니까? (0) | 2023.04.22 |