我的文件末尾有空白行。我需要为除最后一个空白行之外的每一行添加后缀。
我用:
awk '$0=$0"suffix"' | sed 's/^suffix$//'
但也许可以在没有sed
的情况下完成?
更新:
我想跳过所有只包含' \ n'符号
实施例
我有档案test.tsv
:
a\tb\t1\n
\t\t\n
c\td\t2\n
\n
我运行cat test.tsv | awk '$0=$0"\t2"' | sed 's/^\t2$//'
:
a\tb\t1\t2\n
\t\t\t2\n
c\td\t2\t2\n
\n
答案 0 :(得分:3)
听起来这就是你所需要的:
awk 'NR>1{print prev "suffix"} {prev=$0} END{ if (NR) print prev (prev == "" ? "" : "suffix") }' file
END中的NR测试是为了避免在给定空输入文件的情况下打印空白行。当然,它没有经过测试,因为你没有在你的问题中提供任何样本输入/输出。
要处理所有空行:
awk '{print $0 (/./ ? "suffix" : "")}' file
答案 1 :(得分:1)
这将跳过所有空行
awk 'NF{$0=$0 "suffix"}1' file
仅在空白
时跳过最后一行 awk 'NR>1{print p "suffix"} {p=$0} END{print p (NF?"suffix":"") }' file
答案 2 :(得分:1)
@try:
awk 'NF{print $0 "suffix"}' Input_file
答案 3 :(得分:1)
如果perl
没问题:
$ cat ip.txt
a b 1
c d 2
$ perl -lpe '$_ .= "\t 2" if !(eof && /^$/)' ip.txt
a b 1 2
2
c d 2 2
$ # no blank line for empty file as well
$ printf '' | perl -lpe '$_ .= "\t 2" if !(eof && /^$/)'
$
-l
从输入中删除换行符,由于-p
选项eof
检查文件结尾/^$/
空行$_ .= "\t 2"
附加到输入行答案 4 :(得分:0)
试试这个 -
$ cat f ###Blank line only in the end of file
-11.2
hello
$ awk '{print (/./?$0"suffix":"")}' f
-11.2suffix
hellosuffix
$
OR
$ cat f ####blank line in middle and end of file
-11.2
hello
$ awk -v val=$(wc -l < f) '{print (/./ || NR!=val?$0"suffix":"")}' f
-11.2suffix
suffix
hellosuffix
$