导航:首页 > 操作系统 > linuxn换行符

linuxn换行符

发布时间:2023-05-09 17:13:06

1. linux环境用java生成文件后的换行符问题

shell命令的话unix2dos
直接操汪衡作文件的话,记住,append是在最后加\r,就变成了\n\首晌r,而不是者陵锋\r\n

2. “LINUX删掉换行符”是什么

去掉文件中的换行符x0dx0a(1)tr命令的操作是针对文件的操作,它把整个文本当做操作的对象,所以可以直接去除文件中的换行符x0dx0atr '\n' ' ' < filex0dx0a(2)sed的操作对象是行.而作为行分割符号的回车符,本身是不属于行的枯肢.所以sed中必须加上N命令,把下一行的内容添加到当前的pattern space中,这样实际上是把相邻的2行合并了.下一次仍然是先n,再p,再N,开始新的轮回:x0dx0acat file | sed 'N;s/\n/ /'x0dx0a所以上面的语句是不能把没察世文件内容合并为一行的,到底该怎么写没困,我暂时没有想到,呵呵x0dx0a(3)直接用awkx0dx0aawk '{printf("%s ",$0)}' filex0dx0a(4)当然,用echo也是可以的:x0dx0awhile read line;do echo -n "$line"; done < awk_help.txt, 这样,可以把awk_help.txt的内容合并为一行x0dx0ased -e "s#\[/r][/r][/n]#\[/r][/n]#g" file

3. Windows和Linux换行符的区别

'\r'是回车,前者使光标到行首,(carriage return)
'\n'是换行,后者使光标下移一格,(line feed)

\r 是回车,return
\n 是换行,newline
对于换行这个动作,unix下一般只有一个0x0A表示换行("\n"),windows下一般都是0x0D和0x0A两个字符("\r\n"),苹果机(MAC OS系统)则采用回车符CR表示下一行(\r)

Unix系统里,每行结尾只有“<换行>”,即“\n”;
Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;
Mac系统里,每行结尾是“<回车>”,即“\r”。
一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix下打开的话,在每行的结尾会多车一个^M字符。
Dos和windows采用回车+换行CR/LF表示下一行,即^M$($不是换行符的表示,换行符没有表示出来,$是文本结束EOF的表示)
而UNIX/Linux采用换行符LF表示下一行,即\n
苹果机(MAC OS系统)则采用回车符CR表示下一行,即\r

CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D;
LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A. 所弯扰以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字埋悄旦节表示.

由于dos风格的换行使用\r\n,把这样的文件上传到unix,有些版本的vi不能识别\r,所以vi显示时在行尾会出现^M出来,但是有些就能识别运猜\r\n,正常显示回车换行。

4. Linux /r /n

CR :Carriage Return,对应ASCII中转义字符\r ,0x0D(asc码是13) 指的是“回车”   \r是把光标置于本行行首

LF :Linefeed,对应ASCII中转义字符\n ,0x0A(asc码是10) 指的是“换行”    \n是把光标置于下一行的同一列

CRLF:Carriage Return & Linefeed,\r\n , 0x0D + 0x0A ,指的是回车换行    \r\n把光标置滑野于下一行行首 

^M的原因 : ^M 注意要用 Ctrl + V Ctrl + M 来输入

Dos、Windows 格式的文件,用 0D 0A (CR+LF)作为换行符,而Unix 的则是以0A(LF) 作为换行符.所以dos 底下的文本文件到了unix的话,换行符就会多出来一个 0D(CR) 显示为 ^M,在linux中vim中无法显示\r

因为ascii中对应的不是linux中的标准acsii字符,其实困胡其对应的ASCII码十进制形式是: 13 (无显示形式);对应的八进制形式 15 (显示为^M)从二进制层面来理解,即可以删除换行符前面对应的字符字节(我瞎编的,应该对的),在字符层面直接删除^M这个字节即可

方法1:

在命令模式下:输入:%s/^M//g 然后,回车即可替换

注,其中”^M”的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的

方法2:

使用vi打开文本文件

vi dos.txt

命令模式下输入

:set fileformat=unix

:w

方法3:

使用信尺喊sed 工具

sed ’s/^M//’ filename > tmp_filename

方法4:

既然window下的回车符多了‘\r’,那么当然通过删除‘\r’ ,也可以实现:

tr -d ‘\r’

或者:

sed -i 's/\r//' startup.sh

window下默认是 \r\n

linux下是\n

unix下是\r

  现在, 我们看看本文开头部分的问题。 假设有一个linux下的unix.txt文件,  那么, 它在文件中的换行标志是:\n, 现在把unix.txt拷贝靠Windows上, 那好啊, Windows那双犀利的眼神仿佛是在对unix.txt文件说: 别跟我整什么\n, 我只认识文件中的\r\n, 如果你这个unix.txt文件里面有\r\n, 那我就认为是换行符, 否则, 我不认你。 如此一来, Windows压根就找不到unix.txt中的\r\n, 所以, 对于Windows而言, 压根就没有发现unix.txt有任何换行, 所以, 我们从Windows上看到的unix.txt文件显示在一行里面。 

5. linux系统符号说明

    01 系统特殊符号

    02 系统通配符号

    03 系统正则符号

    说明: 查询信息的时候,会带来便利

    1) 基础符号系列

      $ 

      a 调取变量信息

      b 区分用户类型  $ 普通用户

      c 结合awk对文件进行取列  

    xargs -n 2 <test01.txt|awk '{print $2}'

  !

  a 强制的作用  wq!

  b 可以实现取反

awk '!/oldgirl/' test02.txt (排除oldgirl)

find /oldboy_dir/ ! -type f (排除文件)

  c !信息  可以快速调取执行历史命令(慎用)

    cat ~/.bash_history  -- 记录历史命令信息, 但是不会实时记录

history              -- 显示所有输入过的历史命令

      |

  a 实现管道功能

    将前一个命令执行的结果交给管道后面的命令进行处理

一般管道符号 会经常和xargs命令配合使用

批量删除操作

find /oldboy -type f -name "oldboy*.txt"|xargs rm

find /oldboy_dir/ -type f -delete

    find /oldboy_dir/ -type f -exec rm -f {} \;

    查找指定数据信息进行复制

    find /oldboy -type f -name "oldboy*.txt" |xargs -i cp {} /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" |xargs cp -t /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" -exec cp -a {} /oldgirl \;

查找指定数据信息进行移动

    find /oldboy -type f -name "oldboy*.txt" |xargs -i mv {} /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" |xargs mv -t /oldgirl/

    find /oldboy -type f -name "oldboy*.txt" -exec mv {} /oldgirl \;

    xargs(火眼金睛)后面跟的命令,不识别别名信息

  #

    a 表示对配置文件信息进行注释

    b 表示用户的身份信息 超级管理员用户

2) 引号符号系列

      "" 基本上和单引号功能类似 但是可以对一些特殊符号做出解析  $ `命令`==$(命令)

      '' 里面编写的什么内容就输出什么内容  所见即所得

  作用:

  01. 指定需要输出的信息

  02. 利用引号将空格分隔的信息汇总为一个整体

      ``($()) 将引号里面命令执行结果,交给引号外面命令进行使用  

3) 重定向符号

  >/1>  标准输出重定向符号

  >>/1>> 标准输出追加重定向符号

  2> 错误输出重定向符号

  2>> 错误输出追加重定向符号

  <  标准输入重定向符号

      tr xargs

  << 标准输入追加重定向符号

4) 逻辑符号系列

  逻辑: 在完成一件事情的时候,有合理先后顺序

  &&  前一个命令操作执行成功了,再操作执行后面的命令

  ||  前一个命令操作执行失败了,再操作执行后面的命令

  mkdir /old_dir && echo "create dir sucess" || echo "create dir failed"

      create dir sucess

      mkdi /old_dir && echo "create dir sucess" || echo "create dir failed"

      -bash: mkdi: command not found

      create dir failed

    什么通配符号: 用于匹配文件名称信息, 便于快速查找文件信息 find

    *  匹配所有信息

      find /oldboy -type f -name "oldboy*"  ---以oldboy开头的信息都查询出来

  find /oldboy -type f -name "*oldboy"  ---以oldboy开头的信息都查询出来

  find /oldboy -type f -name "oldgirl*oldboy" 

                                          ---以oldgirl 开头的信息

    以oldboy  结尾的信息都查询出来

{} 产生序列信息

  连续序列:

    echo {01..05}

        echo {a..z}

        echo {A..Z}

  生成不连续序列

  a 有规律的不连续序列

echo {01..05..2}

        01 03 05

        echo {a..z..2}

      b 没规律的不连续序列

echo {www,bbs,blog}

        www bbs blog

  生成组合序列

        echo {1,2}{a,b}

        1a 1b 2a 2b

        echo {1,2}{a,b}{A,B}

        1aA 1aB 1bA 1bB 2aA 2aB 2bA 2bB

    echo A{a,b}

        Aa Ab  

      A=oldboy.txt

      echo oldboy.txt{a,b}  

      oldboy.txta oldboy.txtb  

  echo A{,b}

      A Ab

  A=oldboy.txt

  b=.bak

  cp oldboy.txt{,.bak} == cp oldboy.txt oldboy.txt.bak

  快速备份文件命令

  cp oldboy.txt{,.bak}

  快速还原数据方法

  cp oldboy.txt{.bak,}

  echo A{B,}

      AB A

  oldboy.txt{.bak,} == cp oldboy.txt.bak oldboy.txt

    基础正则符号:basic regular expression    (BRE)

扩展正则符号:extended regular expression (ERE)

基础正则符号:

    a 尖角符号:^

      以什么开头的信息进行过滤出来

  grep -v "^#" nginx.conf.default >nginx.conf(对不需要关注的信息取反)

  常见错误

  find / -type f -name "^oldboy"  错误

  find / -type f -name "oldboy*"  正确

    b 美元符号:$

  以什么结尾的信息进行过滤出来

  以m结尾信息, 并且显示上1行 和 下2行的信息

      grep "m$" -A 2 -B 1 test.txt

      常见错误:

  如果过滤不出来,确认每行结尾是否有空格信息

  方法一:

  cat -A test.txt

  方法二

      vim 底行模式输入命令 --- :set list

c 尖角美元符号:^$

      取出文件中空行信息

      grep "^$" test.txt

      grep -v "^$" test.txt

d 点符号: .

  表示匹配任意一个且只有一个字符

  grep "." test.txt  -o(更直观的显示过程)

e 星号符号: *

  匹配星号前面一个字符连续出现0次或多次

f 点和星号组合: .*

      匹配所有信息

  说明: 正则符号在匹配数据信息的时候具有贪婪特性

避免贪婪特性的方法,是在指定一行信息中唯一节点信息

g 转译符号: \

1) 将一些有意义的符号进行转译, 变为一个普通符号

grep "\.$" ~/oldboy_test.txt

2) 将一些没有意义的符号进行转译,变为有意义符号

    \n  换行符号 linux

    3) 可以将扩展正则符号转换成普通正则让grep sed命令可以直接识别'

grep "o\?" test.txt

h 括号符号:[]

  匹配括号中每一个字符,并且匹配的关系是或者的关系

  需求: 找出文件中oldboy 和 oldbey两个单词信息

      grep "oldb[oe]y" test.txt

      企业应用: 找寻文件中字母 数字信息

      grep "[0-9a-zA-Z]" test.txt

i 尖号和中括号组合使用 : [^]

  对中括号里面匹配的字符信息进行排除

  grep  "[^0-9a-zA-Z]" test.txt  --- 将字母数字都排除,只留下符号信息

  尖号和中括号组合使用 : ^[]

  以中括号里面匹配的字符作为一行开头的字符

      grep "^[zx]" test.txt

正则符号注意事项

按照每行信息进行过滤处理

注意正则表达符号禁止中文

附上颜色信息进行正则过滤 --color=auto/--color

基础正则符号可以被三剑客命令直接识别 grep sed awk

扩展正则符号不可以被三剑客命令中老二和老三直接识别

sed命令想识别正则符号: sed -r

grep命令想识别正则符号: egrep / grep -E

    a 加号符号:+

    匹配加号前面一个字符连续出现1次或者多次

b 竖线符号:|

或者关系符号

egrep "oldboy|oldbey" test.txt

c 括号符号:()

将多个字符信息进行汇总为一个整体

egrep "(oldboy)" test.txt

进行后向引用前向的一个操作(sed)

echo "123456"|sed -r "s#(..)(..)(..)#<\1><\2><\3>#g"

修改配置文件内容

sed -rn "s#(^S.*UX=).*#\1enforcing#gp" /etc/selinux/config

SELINUX=enforcing

d 括号符号:{}

指定花扩号前一个字符连续匹配多少次

* 连续匹配 0 次 或 多次

+ 连续匹配 1 次 或 多次

    1) {n,m}  n表示最少连续匹配多少次  m表示最多连续匹配多少次

2) {n}  n表示只连续匹配n次

3) {n,}  n表示至少连续匹配n次,至多没有限制

4) {,m}  m表示至多连续匹配n次,至少0次

e 问号符号:?

  表示匹配问号前面一个字符出现0次或者1次

6. Linux 终端 如何换行 \n

echo -e 'zero\nzo\nzoo'
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;

7. Linux下的vi换行符是什么,\n

可以用filetype设定,如dos(\r\n)、unix(\n)等
:set filetype默认是\n,但如果打开的文件全用\r\n,也能识别。

8. Linux系统文本文件的内容后面是不是都有一个换行符 \n

不一定,最后应该是EOF

9. linux下printf中\n的重要作用

linux的命令行默认采用行缓冲模式,换行符\n起到刷新输出缓冲区的作用。

10. linux特殊符号大全

tab:文本分隔符,相当于四个空格,在命令行界面可以用来自动补齐命令与目录。
ESC:esc+. ,上一条命令的选项参数,vim恢复到命令模式。
~:家目录
`:反引号,编程中调用shell命令
!:调用前面的命令,!!调用上一条,!23调用前面低23条。
@:at符,后面接IP地址。
#:Linux文件中注释行,表示不起作用。
$:文件行结尾标识符,变量标识符。
%:格式化文本。
^:文件行首标识符
&:任务放到后台
*:通配符,代表一个字符或者很多个字符。
\:用来转义,\t表示制表符,\n表示换行符。
<:数据流的流入方向,表示输入,将数据传入给左侧软件。
|:管道,改变数据流的方向,将数据传入给另外的软件。
>:数据流的流出方向,表示输出,将屏幕输出的内容写入一个文件。
2>:数据流的流出的第二个方向,表示错误输出,报错信息会写入到这个文件中。
>>:表示追加写入
/:根目录,目录分隔符
‘’:双引号,支持转义
‘:单引号,不支持转义
():shell编程中使用,命令行用的不多
[]:索引
{}:代码块
::vim或者less命令中,表示可以输入命令
;:分割不同命令
-:短选项标识符-h
--:长选项标识符--help

阅读全文

与linuxn换行符相关的资料

热点内容
exe打开指定文件夹 浏览:264
pdf里面怎么去水印 浏览:845
appleid账号加密码 浏览:220
苹果如何下载微仓app 浏览:916
迅雷解压进度为0 浏览:859
解压解惑近义词 浏览:316
压缩比不一样燃烧室不一样 浏览:101
androidbutton左对齐 浏览:172
怎么找到学校的服务器 浏览:368
android状态栏高度是多少 浏览:987
linuxcliphp 浏览:515
萝卜源码如何关闭用户注册验证 浏览:756
苹果手机头条app怎么没有tv 浏览:563
电脑qq文件夹怎么发不出去 浏览:614
解压小游戏测试钻石剑的硬度 浏览:964
java结束函数 浏览:623
打开远程桌面的命令 浏览:838
树莓派如何搭建mqtt服务器 浏览:589
怎么加密w8文件 浏览:611
linuxprogram 浏览:710