awk 如何获取每行最后一个字符
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了awk 如何获取每行最后一个字符相关的知识,希望对你有一定的参考价值。
1、新建一个html文件,命名为test.html。
2、在test.html文件内,在p标签内,使用input标签创建一个字符串输入框。
3、在test.html文件内,设置input元素的id为myinput,主要用于下面通过该id获得input对象。
4、在test.html文件内,使用button标签创建一个按钮,按钮名称为“获取字符串最后一个字符”。
5、在test.html文件中,给button按钮绑定onclick点击事件,当按钮被点击时,执行getlast()函数。
6、在js标签中,创建getlast()函数,在函数内,通过getElementById()方法获得input对象,使用value属性获得输入框输入的字符串,再使用charAt()方法获得字符串倒数第一个字符(length属性用于获得字符串的长度)。
7、在浏览器打开test.html文件,点击按钮,查看结果。
参考技术A 楼上诸位好复杂.....awk -F '' 'print $NF' inputfile 完事...-F 后面是空格+两个单引号
更新下....
awk -F '' '$0=$NF' inputfile 参考技术B awk 'n=split($0,a,"");print a[n]' filename
或者:
awk 'print substr($0,length())' filename本回答被提问者和网友采纳 参考技术C awk 'print substr($0,length($0))'如何获取每行中的字符数?
【中文标题】如何获取每行中的字符数?【英文标题】:How do I get number of characters in each line? 【发布时间】:2019-05-23 21:38:01 【问题描述】:我需要获取每行中的字符数,然后将其粘贴到另一个文件(学校项目)中,但即使我的原型已经无法工作。
当我将它粘贴到另一个文件时,我已经尝试继续查看问题是否自行解决,但它没有工作,所以我回到了这个。
int main()
FILE *fw;
FILE *fr;
int i = 0;
char c;
fr = fopen("vstup.txt","r");
fw = fopen("vystup.txt","w");
while ((c = getc(fr)) != EOF)
while ((c = getc(fr)) != '\n')
i++;
printf("%d\n", i);
【问题讨论】:
究竟是什么不适合您?顺便说一句,您正在跳过每行中的第一个字符。 你没有把计数器归零...char c
应该是int c
。
也许看看this post 和 cmets 中的链接。
Comparing unsigned char and EOF的可能重复
【参考方案1】:
c
必须声明为 int
,而不是 char
。 EOF
可能不是有效的 char
值,因此不等式可能永远存在。
您不应两次致电getc()
。您永远不会检查第一次调用的结果是否是换行符。
您需要在读取换行符后将i
设置回0
,否则您将继续将下一行的长度添加到上一行。
您应该只在读取换行符时打印长度,而不是每次通过循环。如果最后一行不以换行符结尾,则应在循环后打印其长度;如果完成后i
不是0
,您就可以知道发生了这种情况。
由于长度应该写入另一个文件,你应该使用fprintf()
。
while ((c=getc(fr)) != EOF)
if (c == '\n')
printf("%d\n", i);
i = 0;
else
i++;
if (i != 0)
fprintf(fw, "%d\n", i);
【讨论】:
【参考方案2】:您不需要嵌套循环。无论哪种方式,您都需要将计数器归零,因此您不妨只使用if
而不是一段时间:
int main()
FILE *fw, *fr;
int count = 0;
int c;
fr = fopen("vstup.txt","r");
fw = fopen("vystup.txt","w");
while ((c = getc(fr)) != EOF)
count++;
if(c == '\n')
fprintf(fw, "%d\n", count);
count = 0;
fclose(fr);
fclose(fw);
此版本会将换行符视为有效字符。
注意c
必须是int
,而不是char
,这样它就可以保存getc
和EOF
返回的每个字符值,这不是字符值。
别忘了关闭你的文件!
【讨论】:
@Eric。那确实好多了,所以我无耻地窃取了你的建议。 不是偷的;它是免费提供的。教别人改进答案比我自己写所有东西做得更多。 @Eric。谢谢你。大多数时候我都有同样的感觉。以上是关于awk 如何获取每行最后一个字符的主要内容,如果未能解决你的问题,请参考以下文章