디렉터리 목록이 포함된 파일이 있습니다.
$ cat dirs.txt
/some/path
/other/path
/some/another/one
현재 디렉토리는/home/loom
$ echo $PWD
/home/loom
$PWD
다음과 같이 각 행에 추가하고 싶습니다 dirs.txt
.
/home/loom/some/path
/home/loom/other/path
/home/loom/some/another/one
실패하면서 명령을 시도했습니다.
$ cat dirs.txt | awk '{print $PWD$1}'
/some/path/some/path
/other/path/other/path
/some/another/one/some/another/one
각 행을 두 배로 늘립니다. 내 문제를 해결할 수 있는 명령은 무엇입니까?
내 말은 매개변수 응답을 의미한 것이지,cat dirs.txt | awk '{print "/home/loom" $1}'
답변1
PWD
은 쉘 변수이므로 awk에서 사용하는 작은따옴표 내에서 확장되지 않습니다.
awk -v pwd="$PWD" '{print pwd$1}' dirs.txt
이는 pwd
awk
변수를 쉘 변수의 값으로 설정한 PWD
다음 각 줄의 열 1을 인쇄 dirs.txt
하고 해당 값을 시작 부분에 추가합니다.
GNU awk를 사용하면 파일을 출력으로 덮어쓰는 옵션을 사용할 수 있습니다 -i inplace
. 그렇지 않으면 파일을 새 파일로 리디렉션하고 필요한 경우 기존 파일을 덮어써야 합니다.
답변2
물론 이 작업을 수행하는 더 많은 방법이 있으므로 문제를 해결하기 위해 명령을 요청했으므로 다른 방법은 다음과 같을 수 있습니다.
while read -r line; do echo "${PWD}${line}"; done < "dirs"