여러 줄 문자열 작업에는 for 루프 대신 awk를 사용하세요.

여러 줄 문자열 작업에는 for 루프 대신 awk를 사용하세요.

file1파일 경로가 포함된 여러 줄의 텍스트 파일( )을 생각해 보세요.

$ cat file1
./foo/foo
./foo/bar
./foo/baz

file2각 파일 이름 앞에 특수 문자(예: )를 사용하여 파일 이름을 저장하고 싶습니다 [#.

나는 간단한 for 루프를 사용하여 이 작업을 수행할 수 있다는 것을 알고 있지만 이것이 나쁜 습관으로 간주된다는 것을 알고 있습니다.

for line in $(cat file1); do
echo "[#" $(basename "$line") >> file2;
done

나는 이 작업이 더 깔끔하게 수행될 수 있다고 믿지만 awk아래 코드는 단지 일부분일 뿐입니다. 위 작업을 어떻게 수행합니까 awk?

awk '{print "[#",$0=$(basename $0)}' $file1 > $file2

답변1

필드 구분자 로 사용 /하고 마지막 필드를 인쇄합니다.

$ awk -F/ '{print "[#"$NF}' file1
[#foo
[#bar
[#baz

답변2

sed -e 's|.*/|[#|' file1

결과

[#foo
[#bar
[#baz

관련 정보