Làm cách nào tôi có thể nối số dòng và tab vào đầu mỗi dòng của tệp văn bản?
awk '{printf "%d\t%s\n", NR, $0}' < filename
Lệnh nl nên làm điều này, nhưng nó cũng thêm không gian trước số dòng. Nó là một phần của lõi Linux.
nl lines.txt
1 $bkWTN
2 $cV8$.
sed = test.txt | sed 'N;s/\n/\t/'
Lệnh "sed =" sẽ in số dòng theo sau là dòng hoàn trả và sau đó là dòng tiếp theo.
Biểu thức "N; s/\ n/\ t /" sẽ lấy từng dòng, lấy dòng tiếp theo (tức là số dòng và dòng) và thay thế trả về vận chuyển bằng một tab.
cat -n <yourfile> | Perl -pe "s/^\s*(\d+)\s+/\1\t/"
cat -n thêm vải lanh là "123 linecontents" và regrec đó sửa đổi nó thành "linenumberTABlinecontents"
Perl -pe "s/^/$.\t$_/" file.txt
hoặc là
Perl -ne "print qq($.\t$_)" file.txt
OK, đây là một giải pháp bash một dòng:
$ IFS=$'\n';x=1;for l in $(<file.txt);do echo -e "$x\t$l";((x+=1));done
$ IFS=
Cài đặt IFS đầu tiên cho bash đọc một dòng đầy đủ tại một thời điểm. Dòng thứ hai đặt lại IFS về mặc định.
Là một phần thưởng bổ sung, nó chạy hoàn toàn trong Shell của bạn và không thực hiện chương trình!
Làm thế nào về
cat -n somefile.txt
?
Ok, vì chúng tôi đang thu thập các cách để làm điều này,
grep -n . file.txt | sed 's/\(^[0-9]*\):/\1 /g'
# this is a tab with Ctrl-V + Tab =====> ----
sed file.txt -e 's/^/\t/' | cat -n | sed -e 's/^\t//'
hoặc đối với một số sed
s không phải GNU:
cat file.txt | sed -e 's/^/\\t/' | cat -n | sed -e 's/^\\t//'