이것man
페이지별로 희망을 주지는 않지만 문서화되지 않은(및/또는 GNU 특정) 기능이기를 바랍니다.
답변1
답변2
당신은 할 수 없습니다. ed, GNU sed 또는 perl을 사용하거나 콘텐츠에 대한 새 파일을 만드는 등 뒤에서 수행하는 작업을 수행합니다.
ed
, 휴대용:
ed foo <<EOF
1,$s/^\([^,]*\),\([^,]*\),\([^,]*\).*/\1,\3/
w
q
EOF
그누 sed
:
sed -i -e 's/^\([^,]*\),\([^,]*\),\([^,]*\).*/\1,\3/' foo
진주:
perl -i -l -F, -pae 'print @F[1,3]' foo
cut
, 새 파일을 만듭니다(스크립트가 중단된 경우 다시 실행할 수 있으므로 권장됨).
cut -d , -f 1,3 <foo >foo.new &&
mv -f foo.new foo
cut
, 파일을 제자리에 교체합니다(소유권과 권한을 유지 foo
하지만 중단을 방지해야 함).
cp -f foo foo.old &&
cut -d , -f 1,3 <foo.old >foo &&
rm foo.old
나는 기반 방법 중 하나를 사용하는 것이 좋습니다 cut
. 이렇게 하면 비표준 도구에 의존할 필요가 없고 작업에 가장 적합한 도구를 사용할 수 있으며 중단이 발생할 때 동작을 제어할 수 있습니다.
답변3
나는 그것이 그 자체로는 가능하지 않다고 생각한다 cut
. 매뉴얼이나 정보 페이지에서 찾을 수 없습니다. 당신은 다음과 같은 것을 할 수 있습니다
mytemp=$(mktemp) && cut -d" " -f1 file > $mytemp && mv $mytemp file
mktemp
출력을 파이프로 연결할 수 있는 비교적 안전한 임시 파일을 제공합니다 cut
.
답변4
POSIX Awk와 함께 후루룩 소리를 사용할 수 있습니다:
cut -b1 file | awk 'BEGIN{RS="";getline<"-";print>ARGV[1]}' file