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